src/cm/media/js/lib/yui/yui3-3.15.0/build/charts-base/charts-base-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('charts-base', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * Provides functionality for creating charts.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 * @module charts
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
var CONFIG = Y.config,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
    WINDOW = CONFIG.win,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    DOCUMENT = CONFIG.doc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
    Y_Lang = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    IS_STRING = Y_Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
    _getClassName = Y.ClassNameManager.getClassName,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    SERIES_MARKER = _getClassName("seriesmarker");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
 * Gridlines draws gridlines on a Graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 * @class Gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 * @extends Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
 * @uses Renderer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
 * @param {Object} config (optional) Configuration parameters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
Y.Gridlines = Y.Base.create("gridlines", Y.Base, [Y.Renderer], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
     * Reference to the `Path` element used for drawing Gridlines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
     * @property _path
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
     * @type Path
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    _path: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
     * Removes the Gridlines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
     * @method remove
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    remove: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        var path = this._path;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        if(path)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
            path.destroy();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
     * Draws the gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
     * @method draw
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
    draw: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
        if(this.get("axis") && this.get("graph"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
            this._drawGridlines();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
     * Algorithm for drawing gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
     * @method _drawGridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
    _drawGridlines: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
        var path,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            axis = this.get("axis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            axisPosition = axis.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            points,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            direction = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
            w = graph.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            h = graph.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
            line = this.get("styles").line,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
            color = line.color,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
            weight = line.weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
            alpha = line.alpha,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            count = this.get("count"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
            length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
            lineFunction;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        if(isFinite(w) && isFinite(h) && w > 0 && h > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
            if(count && Y.Lang.isNumber(count))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
                points = this._getPoints(count, w, h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
            else if(axisPosition !== "none" && axis && axis.get("tickPoints"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
                points = axis.get("tickPoints");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
                points = this._getPoints(axis.get("styles").majorUnit.count, w, h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
            l = points.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
            path = graph.get("gridlines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            path.set("width", w);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
            path.set("height", h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
            path.set("stroke", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
                weight: weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
                color: color,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
                opacity: alpha
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            if(direction === "vertical")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
                lineFunction = this._verticalLine;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
                length = h;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
                lineFunction = this._horizontalLine;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
                length = w;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
            for(i = 0; i < l; i = i + 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
                lineFunction(path, points[i], length);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
            path.end();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
     * Calculates the coordinates for the gridlines based on a count.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
     * @method _getPoints
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
     * @param {Number} count Number of gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
    _getPoints: function(count, w, h)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
        var i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
            points = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
            multiplier,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
            divisor = count - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
        for(i = 0; i < count; i = i + 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
            multiplier = i/divisor;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
            points[i] = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
                x: w * multiplier,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
                y: h * multiplier
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
        return points;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
     * Algorithm for horizontal lines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
     * @method _horizontalLine
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
     * @param {Path} path Reference to path element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
     * @param {Object} pt Coordinates corresponding to a major unit of an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
     * @param {Number} w Width of the Graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
    _horizontalLine: function(path, pt, w)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
        path.moveTo(0, pt.y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
        path.lineTo(w, pt.y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
     * Algorithm for vertical lines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
     * @method _verticalLine
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
     * @param {Path} path Reference to path element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
     * @param {Object} pt Coordinates corresponding to a major unit of an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
     * @param {Number} h Height of the Graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
    _verticalLine: function(path, pt, h)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
        path.moveTo(pt.x, 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
        path.lineTo(pt.x, h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
     * Gets the default value for the `styles` attribute. Overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
     * base implementation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
     * @method _getDefaultStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
    _getDefaultStyles: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
        var defs = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
            line: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
                color:"#f0efe9",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
                weight: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
                alpha: 1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
        return defs;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
         * Indicates the direction of the gridline.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
         * @attribute direction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
        direction: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
         * Indicate the `Axis` in which to bind
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
         * the gridlines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
         * @attribute axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
         * @type Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
        axis: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
         * Indicates the `Graph` in which the gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
         * are drawn.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
         * @attribute graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
         * @type Graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
        graph: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
         * Indicates the number of gridlines to display. If no value is set, gridlines will equal the number of ticks in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
         * the corresponding axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
         * @attribute count
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
        count: {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
 * Graph manages and contains series instances for a `CartesianChart`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
 * instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
 * @class Graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
 * @extends Widget
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
 * @uses Renderer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
Y.Graph = Y.Base.create("graph", Y.Widget, [Y.Renderer], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
     * @method bindUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
    bindUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
        var bb = this.get("boundingBox");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
        bb.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
        this.after("widthChange", this._sizeChangeHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
        this.after("heightChange", this._sizeChangeHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
        this.after("stylesChange", this._updateStyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
        this.after("groupMarkersChange", this._drawSeries);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
     * @method syncUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
    syncUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
        var background,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
            cb,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
            bg,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
            sc = this.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
            series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
            len = sc ? sc.length : 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
            hgl = this.get("horizontalGridlines"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
            vgl = this.get("verticalGridlines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
        if(this.get("showBackground"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
            background = this.get("background");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
            cb = this.get("contentBox");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
            bg = this.get("styles").background;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
            bg.stroke = bg.border;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
            bg.stroke.opacity = bg.stroke.alpha;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
            bg.fill.opacity = bg.fill.alpha;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
            bg.width = this.get("width");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
            bg.height = this.get("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
            bg.type = bg.shape;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
            background.set(bg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
            series = sc[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
            if(series instanceof Y.SeriesBase)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
                series.render();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
        if(hgl && hgl instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
            hgl.draw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
        if(vgl && vgl instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
            vgl.draw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
     * Object of arrays containing series mapped to a series type.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
     * @property seriesTypes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
    seriesTypes: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
     * Returns a series instance based on an index.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
     * @method getSeriesByIndex
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
     * @param {Number} val index of the series
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
     * @return CartesianSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
    getSeriesByIndex: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
        var col = this.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
            series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
        if(col && col.length > val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
            series = col[val];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
        return series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
     * Returns a series instance based on a key value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
     * @method getSeriesByKey
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
     * @param {String} val key value of the series
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
     * @return CartesianSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
    getSeriesByKey: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
        var obj = this._seriesDictionary,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
            series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
        if(obj && obj.hasOwnProperty(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
            series = obj[val];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
        return series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
     * Adds dispatcher to a `_dispatcher` used to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
     * to ensure all series have redrawn before for firing event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
     * @method addDispatcher
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
     * @param {CartesianSeries} val series instance to add
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
    addDispatcher: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
        if(!this._dispatchers)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
            this._dispatchers = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
        this._dispatchers.push(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
     * Collection of series to be displayed in the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
     * @property _seriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
    _seriesCollection: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
     * Object containing key value pairs of `CartesianSeries` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
     * @property _seriesDictionary
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
    _seriesDictionary: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
     * Parses series instances to be displayed in the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
     * @method _parseSeriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
     * @param {Array} Collection of `CartesianSeries` instances or objects container `CartesianSeries` attributes values.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
    _parseSeriesCollection: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
        if(!val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
        var len = val.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
            series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
            seriesKey;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
        this._seriesCollection = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
        this._seriesDictionary = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
        this.seriesTypes = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
            series = val[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
            if(!(series instanceof Y.CartesianSeries) && !(series instanceof Y.PieSeries))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
                this._createSeries(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
                continue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
            this._addSeries(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
        len = this._seriesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
        for(i = 0; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
            series = this.get("seriesCollection")[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
            seriesKey = series.get("direction") === "horizontal" ? "yKey" : "xKey";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
            this._seriesDictionary[series.get(seriesKey)] = series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
     * Adds a series to the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
     * @method _addSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
     * @param {CartesianSeries} series Series to add to the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
    _addSeries: function(series)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
        var type = series.get("type"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
            seriesCollection = this.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
            graphSeriesLength = seriesCollection.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
            seriesTypes = this.seriesTypes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
            typeSeriesCollection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
        if(!series.get("graph"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
            series.set("graph", this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
        seriesCollection.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
        if(!seriesTypes.hasOwnProperty(type))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
            this.seriesTypes[type] = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
        typeSeriesCollection = this.seriesTypes[type];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
        series.set("graphOrder", graphSeriesLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
        series.set("order", typeSeriesCollection.length);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
        typeSeriesCollection.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
        series.set("seriesTypeCollection", typeSeriesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
        this.addDispatcher(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
        series.after("drawingComplete", Y.bind(this._drawingCompleteHandler, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
        this.fire("seriesAdded", series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
     * Creates a `CartesianSeries` instance from an object containing attribute key value pairs. The key value pairs include
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
     * attributes for the specific series and a type value which defines the type of series to be used.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
     * @method createSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
     * @param {Object} seriesData Series attribute key value pairs.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
    _createSeries: function(seriesData)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
        var type = seriesData.type,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
            seriesCollection = this.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
            seriesTypes = this.seriesTypes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
            typeSeriesCollection,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
            SeriesClass,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
            series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
            seriesData.graph = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
        if(!seriesTypes.hasOwnProperty(type))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
            seriesTypes[type] = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
        typeSeriesCollection = seriesTypes[type];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
        seriesData.graph = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
        seriesData.order = typeSeriesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
        seriesData.graphOrder = seriesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
        SeriesClass = this._getSeries(seriesData.type);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
        series = new SeriesClass(seriesData);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
        this.addDispatcher(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
        series.after("drawingComplete", Y.bind(this._drawingCompleteHandler, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
        typeSeriesCollection.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
        seriesCollection.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
        series.set("seriesTypeCollection", typeSeriesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
        if(this.get("rendered"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
            series.render();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
     * String reference for pre-defined `Series` classes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
     * @property _seriesMap
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
    _seriesMap: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
        line : Y.LineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
        column : Y.ColumnSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
        bar : Y.BarSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
        area :  Y.AreaSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
        candlestick : Y.CandlestickSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
        ohlc : Y.OHLCSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
        stackedarea : Y.StackedAreaSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
        stackedline : Y.StackedLineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
        stackedcolumn : Y.StackedColumnSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
        stackedbar : Y.StackedBarSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
        markerseries : Y.MarkerSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
        spline : Y.SplineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
        areaspline : Y.AreaSplineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
        stackedspline : Y.StackedSplineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
        stackedareaspline : Y.StackedAreaSplineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
        stackedmarkerseries : Y.StackedMarkerSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
        pie : Y.PieSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
        combo : Y.ComboSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
        stackedcombo : Y.StackedComboSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
        combospline : Y.ComboSplineSeries,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
        stackedcombospline : Y.StackedComboSplineSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
     * Returns a specific `CartesianSeries` class based on key value from a look up table of a direct reference to a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
     * class. When specifying a key value, the following options are available:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
     *  <table>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
     *      <tr><th>Key Value</th><th>Class</th></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
     *      <tr><td>line</td><td>Y.LineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
     *      <tr><td>column</td><td>Y.ColumnSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
     *      <tr><td>bar</td><td>Y.BarSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
     *      <tr><td>area</td><td>Y.AreaSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
     *      <tr><td>stackedarea</td><td>Y.StackedAreaSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
     *      <tr><td>stackedline</td><td>Y.StackedLineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
     *      <tr><td>stackedcolumn</td><td>Y.StackedColumnSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
     *      <tr><td>stackedbar</td><td>Y.StackedBarSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
     *      <tr><td>markerseries</td><td>Y.MarkerSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
     *      <tr><td>spline</td><td>Y.SplineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
     *      <tr><td>areaspline</td><td>Y.AreaSplineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
     *      <tr><td>stackedspline</td><td>Y.StackedSplineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
     *      <tr><td>stackedareaspline</td><td>Y.StackedAreaSplineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
     *      <tr><td>stackedmarkerseries</td><td>Y.StackedMarkerSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
     *      <tr><td>pie</td><td>Y.PieSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
     *      <tr><td>combo</td><td>Y.ComboSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
     *      <tr><td>stackedcombo</td><td>Y.StackedComboSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
     *      <tr><td>combospline</td><td>Y.ComboSplineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
     *      <tr><td>stackedcombospline</td><td>Y.StackedComboSplineSeries</td></tr>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
     *  </table>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
     * When referencing a class directly, you can specify any of the above classes or any custom class that extends
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
     * `CartesianSeries` or `PieSeries`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
     * @method _getSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
     * @param {String | Object} type Series type.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
     * @return CartesianSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
    _getSeries: function(type)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
        var seriesClass;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
        if(Y_Lang.isString(type))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
            seriesClass = this._seriesMap[type];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
            seriesClass = type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
        return seriesClass;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
     * Event handler for marker events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
     * @method _markerEventHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
    _markerEventHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
        var type = e.type,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
            markerNode = e.currentTarget,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
            strArr = markerNode.getAttribute("id").split("_"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
            series = this.getSeriesByIndex(strArr[1]),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
            index = strArr[2];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
        series.updateMarkerState(type, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
     * Collection of `CartesianSeries` instances to be redrawn.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
     * @property _dispatchers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
    _dispatchers: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
     * Updates the `Graph` styles.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
     * @method _updateStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
    _updateStyles: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
        var styles = this.get("styles").background,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
            border = styles.border;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
            border.opacity = border.alpha;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
            styles.stroke = border;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
            styles.fill.opacity = styles.fill.alpha;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
        this.get("background").set(styles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
        this._sizeChangeHandler();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
     * Event handler for size changes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
     * @method _sizeChangeHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
    _sizeChangeHandler: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
        var hgl = this.get("horizontalGridlines"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
            vgl = this.get("verticalGridlines"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
            w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
            bg = this.get("styles").background,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
            weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
            background;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
        if(bg && bg.border)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
            weight = bg.border.weight || 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
        if(this.get("showBackground"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
            background = this.get("background");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
            if(w && h)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
                background.set("width", w);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
                background.set("height", h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
        if(this._gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
            this._gridlines.clear();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
        if(hgl && hgl instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
            hgl.draw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
        if(vgl && vgl instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
            vgl.draw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
        this._drawSeries();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
     * Draws each series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
     * @method _drawSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
    _drawSeries: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
        if(this._drawing)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
            this._callLater = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
        var sc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
            graphic = this.get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
        graphic.set("autoDraw", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
        graphic.set("width", this.get("width"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
        graphic.set("height", this.get("height"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
        this._callLater = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
        this._drawing = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
        sc = this.get("seriesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
        i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
        len = sc ? sc.length : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
            sc[i].draw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
            if((!sc[i].get("xcoords") || !sc[i].get("ycoords")) && !sc[i] instanceof Y.PieSeries)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
                this._callLater = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
        this._drawing = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
        if(this._callLater)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
            this._drawSeries();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
     * Event handler for series drawingComplete event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   718
     * @method _drawingCompleteHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   719
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   720
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   721
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   722
    _drawingCompleteHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   723
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   724
        var series = e.currentTarget,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   725
            graphic,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   726
            index = Y.Array.indexOf(this._dispatchers, series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   727
        if(index > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   728
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   729
            this._dispatchers.splice(index, 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   730
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   731
        if(this._dispatchers.length < 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   732
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   733
            graphic = this.get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   734
            if(!graphic.get("autoDraw"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   735
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   736
                graphic._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   737
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   738
            this.fire("chartRendered");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   739
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   740
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   741
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   742
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   743
     * Gets the default value for the `styles` attribute. Overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   744
     * base implementation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   745
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   746
     * @method _getDefaultStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   747
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   748
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   749
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   750
    _getDefaultStyles: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   751
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   752
        var defs = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   753
            background: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   754
                shape: "rect",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   755
                fill:{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   756
                    color:"#faf9f2"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   757
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   758
                border: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   759
                    color:"#dad8c9",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   760
                    weight: 1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   761
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   762
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   763
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   764
        return defs;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   765
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   766
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   767
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   768
     * Destructor implementation Graph class. Removes all Graphic instances from the widget.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   769
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   770
     * @method destructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   771
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   772
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   773
    destructor: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   774
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   775
        if(this._graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   776
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   777
            this._graphic.destroy();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   778
            this._graphic = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   779
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   780
        if(this._background)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   781
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   782
            this._background.get("graphic").destroy();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   783
            this._background = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   784
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   785
        if(this._gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   786
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   787
            this._gridlines.get("graphic").destroy();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   788
            this._gridlines = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   789
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   790
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   791
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   792
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   793
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   794
         * The x-coordinate for the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   795
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   796
         * @attribute x
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   797
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   798
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   799
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   800
        x: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   801
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   802
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   803
                this.get("boundingBox").setStyle("left", val + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   804
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   805
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   806
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   807
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   808
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   809
         * The y-coordinate for the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   810
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   811
         * @attribute y
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   812
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   813
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   814
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   815
        y: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   816
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   817
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   818
                this.get("boundingBox").setStyle("top", val + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   819
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   820
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   821
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   822
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   823
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   824
         * Reference to the chart instance using the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   825
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   826
         * @attribute chart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   827
         * @type ChartBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   828
         * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   829
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   830
        chart: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   831
            getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   832
                var chart = this._state.chart || this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   833
                return chart;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   834
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   835
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   836
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   837
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   838
         * Collection of series. When setting the `seriesCollection` the array can contain a combination of either
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   839
         * `CartesianSeries` instances or object literals with properties that will define a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   840
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   841
         * @attribute seriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   842
         * @type CartesianSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   843
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   844
        seriesCollection: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   845
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   846
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   847
                return this._seriesCollection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   848
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   849
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   850
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   851
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   852
                this._parseSeriesCollection(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   853
                return this._seriesCollection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   854
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   855
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   856
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   857
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   858
         * Indicates whether the `Graph` has a background.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   859
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   860
         * @attribute showBackground
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   861
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   862
         * @default true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   863
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   864
        showBackground: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   865
            value: true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   866
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   867
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   868
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   869
         * Read-only hash lookup for all series on in the `Graph`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   870
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   871
         * @attribute seriesDictionary
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   872
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   873
         * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   874
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   875
        seriesDictionary: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   876
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   877
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   878
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   879
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   880
                return this._seriesDictionary;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   881
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   882
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   883
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   884
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   885
         * Reference to the horizontal `Gridlines` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   886
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   887
         * @attribute horizontalGridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   888
         * @type Gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   889
         * @default null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   890
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   891
        horizontalGridlines: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   892
            value: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   893
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   894
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   895
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   896
                var cfg,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   897
                    key,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   898
                    gl = this.get("horizontalGridlines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   899
                if(gl && gl instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   900
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   901
                    gl.remove();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   902
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   903
                if(val instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   904
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   905
                    gl = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   906
                    val.set("graph", this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   907
                    return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   908
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   909
                else if(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   910
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   911
                    cfg = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   912
                        direction: "horizonal",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   913
                        graph: this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   914
                    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   915
                    for(key in val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   916
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   917
                        if(val.hasOwnProperty(key))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   918
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   919
                            cfg[key] = val[key];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   920
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   921
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   922
                    gl = new Y.Gridlines(cfg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   923
                    return gl;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   924
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   925
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   926
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   927
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   928
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   929
         * Reference to the vertical `Gridlines` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   930
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   931
         * @attribute verticalGridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   932
         * @type Gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   933
         * @default null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   934
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   935
        verticalGridlines: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   936
            value: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   937
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   938
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   939
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   940
                var cfg,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   941
                    key,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   942
                    gl = this.get("verticalGridlines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   943
                if(gl && gl instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   944
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   945
                    gl.remove();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   946
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   947
                if(val instanceof Y.Gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   948
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   949
                    gl = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   950
                    val.set("graph", this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   951
                    return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   952
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   953
                else if(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   954
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   955
                    cfg = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   956
                        direction: "vertical",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   957
                        graph: this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   958
                    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   959
                    for(key in val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   960
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   961
                        if(val.hasOwnProperty(key))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   962
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   963
                            cfg[key] = val[key];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   964
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   965
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   966
                    gl = new Y.Gridlines(cfg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   967
                    return gl;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   968
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   969
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   970
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   971
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   972
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   973
         * Reference to graphic instance used for the background.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   974
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   975
         * @attribute background
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   976
         * @type Graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   977
         * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   978
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   979
        background: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   980
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   981
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   982
                if(!this._background)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   983
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   984
                    this._backgroundGraphic = new Y.Graphic({render:this.get("contentBox")});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   985
                    this._backgroundGraphic.get("node").style.zIndex = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   986
                    this._background = this._backgroundGraphic.addShape({type: "rect"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   987
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   988
                return this._background;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   989
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   990
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   991
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   992
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   993
         * Reference to graphic instance used for gridlines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   994
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   995
         * @attribute gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   996
         * @type Graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   997
         * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   998
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   999
        gridlines: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1000
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1001
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1002
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1003
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1004
                if(!this._gridlines)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1005
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1006
                    this._gridlinesGraphic = new Y.Graphic({render:this.get("contentBox")});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1007
                    this._gridlinesGraphic.get("node").style.zIndex = 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1008
                    this._gridlines = this._gridlinesGraphic.addShape({type: "path"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1009
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1010
                return this._gridlines;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1011
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1012
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1013
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1014
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1015
         * Reference to graphic instance used for series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1016
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1017
         * @attribute graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1018
         * @type Graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1019
         * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1020
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1021
        graphic: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1022
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1023
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1024
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1025
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1026
                if(!this._graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1027
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1028
                    this._graphic = new Y.Graphic({render:this.get("contentBox")});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1029
                    this._graphic.get("node").style.zIndex = 2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1030
                    this._graphic.set("autoDraw", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1031
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1032
                return this._graphic;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1033
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1034
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1035
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1036
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1037
         * Indicates whether or not markers for a series will be grouped and rendered in a single complex shape instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1038
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1039
         * @attribute groupMarkers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1040
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1041
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1042
        groupMarkers: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1043
            value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1044
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1045
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1046
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1047
         * Style properties used for drawing a background. Below are the default values:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1048
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1049
         *      <dt>background</dt><dd>An object containing the following values:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1050
         *          <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1051
         *              <dt>fill</dt><dd>Defines the style properties for the fill. Contains the following values:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1052
         *                  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1053
         *                      <dt>color</dt><dd>Color of the fill. The default value is #faf9f2.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1054
         *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the background fill.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1055
         *                      The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1056
         *                  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1057
         *              </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1058
         *              <dt>border</dt><dd>Defines the style properties for the border. Contains the following values:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1059
         *                  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1060
         *                      <dt>color</dt><dd>Color of the border. The default value is #dad8c9.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1061
         *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the background border.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1062
         *                      The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1063
         *                      <dt>weight</dt><dd>Number indicating the width of the border. The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1064
         *                  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1065
         *              </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1066
         *          </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1067
         *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1068
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1069
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1070
         * @attribute styles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1071
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1072
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1073
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1074
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1075
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1076
 * The ChartBase class is an abstract class used to create charts.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1077
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1078
 * @class ChartBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1079
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1080
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1081
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1082
function ChartBase() {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1083
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1084
ChartBase.ATTRS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1085
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1086
     * Data used to generate the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1087
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1088
     * @attribute dataProvider
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1089
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1090
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1091
    dataProvider: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1092
        lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1093
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1094
        valueFn: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1095
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1096
            var defDataProvider = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1097
            if(!this._wereSeriesKeysExplicitlySet())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1098
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1099
                this.set("seriesKeys", this._buildSeriesKeys(defDataProvider), {src: "internal"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1100
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1101
            return defDataProvider;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1102
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1103
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1104
        setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1105
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1106
            var dataProvider = this._setDataValues(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1107
            if(!this._wereSeriesKeysExplicitlySet())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1108
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1109
                this.set("seriesKeys", this._buildSeriesKeys(dataProvider), {src: "internal"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1110
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1111
            return dataProvider;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1112
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1113
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1114
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1115
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1116
     * A collection of keys that map to the series axes. If no keys are set,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1117
     * they will be generated automatically depending on the data structure passed into
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1118
     * the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1119
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1120
     * @attribute seriesKeys
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1121
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1122
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1123
    seriesKeys: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1124
        lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1125
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1126
        setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1127
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1128
            var opts = arguments[2];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1129
            if(!val || (opts && opts.src && opts.src === "internal"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1130
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1131
                this._seriesKeysExplicitlySet = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1132
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1133
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1134
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1135
                this._seriesKeysExplicitlySet = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1136
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1137
            return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1138
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1139
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1140
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1141
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1142
     * Sets the `aria-label` for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1143
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1144
     * @attribute ariaLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1145
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1146
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1147
    ariaLabel: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1148
        value: "Chart Application",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1149
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1150
        setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1151
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1152
            var cb = this.get("contentBox");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1153
            if(cb)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1154
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1155
                cb.setAttribute("aria-label", val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1156
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1157
            return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1158
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1159
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1160
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1161
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1162
     * Sets the aria description for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1163
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1164
     * @attribute ariaDescription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1165
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1166
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1167
    ariaDescription: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1168
        value: "Use the up and down keys to navigate between series. Use the left and right keys to navigate through items in a series.",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1169
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1170
        setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1171
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1172
            if(this._description)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1173
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1174
                this._description.set("text", val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1175
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1176
            return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1177
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1178
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1179
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1180
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1181
     * Reference to the default tooltip available for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1182
     * <p>Contains the following properties:</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1183
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1184
     *      <dt>node</dt><dd>Reference to the actual dom node</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1185
     *      <dt>showEvent</dt><dd>Event that should trigger the tooltip</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1186
     *      <dt>hideEvent</dt><dd>Event that should trigger the removal of a tooltip (can be an event or an array of events)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1187
     *      <dt>styles</dt><dd>A hash of style properties that will be applied to the tooltip node</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1188
     *      <dt>show</dt><dd>Indicates whether or not to show the tooltip</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1189
     *      <dt>markerEventHandler</dt><dd>Displays and hides tooltip based on marker events</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1190
     *      <dt>planarEventHandler</dt><dd>Displays and hides tooltip based on planar events</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1191
     *      <dt>markerLabelFunction</dt><dd>Reference to the function used to format a marker event triggered tooltip's text.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1192
     *      The method contains the following arguments:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1193
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1194
     *      <dt>categoryItem</dt><dd>An object containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1195
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1196
     *      <dt>axis</dt><dd>The axis to which the category is bound.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1197
     *      <dt>displayName</dt><dd>The display name set to the category (defaults to key if not provided).</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1198
     *      <dt>key</dt><dd>The key of the category.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1199
     *      <dt>value</dt><dd>The value of the category.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1200
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1201
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1202
     *  <dt>valueItem</dt><dd>An object containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1203
     *      <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1204
     *          <dt>axis</dt><dd>The axis to which the item's series is bound.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1205
     *          <dt>displayName</dt><dd>The display name of the series. (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1206
     *          <dt>key</dt><dd>The key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1207
     *          <dt>value</dt><dd>The value for the series item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1208
     *      </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1209
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1210
     *  <dt>itemIndex</dt><dd>The index of the item within the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1211
     *  <dt>series</dt><dd> The `CartesianSeries` instance of the item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1212
     *  <dt>seriesIndex</dt><dd>The index of the series in the `seriesCollection`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1213
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1214
     *  The method returns an `HTMLElement` which is written into the DOM using `appendChild`. If you override this method and choose
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1215
     *  to return an html string, you will also need to override the tooltip's `setTextFunction` method to accept an html string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1216
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1217
     *  <dt>planarLabelFunction</dt><dd>Reference to the function used to format a planar event triggered tooltip's text
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1218
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1219
     *      <dt>categoryAxis</dt><dd> `CategoryAxis` Reference to the categoryAxis of the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1220
     *      <dt>valueItems</dt><dd>Array of objects for each series that has a data point in the coordinate plane of the event. Each
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1221
     *      object contains the following data:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1222
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1223
     *      <dt>axis</dt><dd>The value axis of the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1224
     *      <dt>key</dt><dd>The key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1225
     *      <dt>value</dt><dd>The value for the series item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1226
     *      <dt>displayName</dt><dd>The display name of the series. (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1227
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1228
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1229
     *      <dt>index</dt><dd>The index of the item within its series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1230
     *      <dt>seriesArray</dt><dd>Array of series instances for each value item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1231
     *      <dt>seriesIndex</dt><dd>The index of the series in the `seriesCollection`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1232
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1233
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1234
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1235
     *  The method returns an `HTMLElement` which is written into the DOM using `appendChild`. If you override this method and choose
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1236
     *  to return an html string, you will also need to override the tooltip's `setTextFunction` method to accept an html string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1237
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1238
     *  <dt>setTextFunction</dt><dd>Method that writes content returned from `planarLabelFunction` or `markerLabelFunction` into the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1239
     *  the tooltip node. Has the following signature:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1240
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1241
     *      <dt>label</dt><dd>The `HTMLElement` that the content is to be added.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1242
     *      <dt>val</dt><dd>The content to be rendered into tooltip. This can be a `String` or `HTMLElement`. If an HTML string is used,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1243
     *      it will be rendered as a string.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1244
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1245
     *  </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1246
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1247
     * @attribute tooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1248
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1249
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1250
    tooltip: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1251
        valueFn: "_getTooltip",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1252
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1253
        setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1254
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1255
            return this._updateTooltip(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1256
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1257
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1258
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1259
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1260
     * The key value used for the chart's category axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1261
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1262
     * @attribute categoryKey
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1263
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1264
     * @default category
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1265
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1266
    categoryKey: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1267
        value: "category"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1268
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1269
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1270
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1271
     * Indicates the type of axis to use for the category axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1272
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1273
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1274
     *      <dt>category</dt><dd>Specifies a `CategoryAxis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1275
     *      <dt>time</dt><dd>Specifies a `TimeAxis</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1276
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1277
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1278
     * @attribute categoryType
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1279
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1280
     * @default category
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1281
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1282
    categoryType:{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1283
        value:"category"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1284
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1285
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1286
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1287
     * Indicates the the type of interactions that will fire events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1288
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1289
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1290
     *      <dt>marker</dt><dd>Events will be broadcasted when the mouse interacts with individual markers.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1291
     *      <dt>planar</dt><dd>Events will be broadcasted when the mouse intersects the plane of any markers on the chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1292
     *      <dt>none</dt><dd>No events will be broadcasted.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1293
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1294
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1295
     * @attribute interactionType
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1296
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1297
     * @default marker
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1298
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1299
    interactionType: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1300
        value: "marker"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1301
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1302
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1303
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1304
     * Reference to all the axes in the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1305
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1306
     * @attribute axesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1307
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1308
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1309
    axesCollection: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1310
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1311
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1312
     * Reference to graph instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1313
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1314
     * @attribute graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1315
     * @type Graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1316
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1317
    graph: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1318
        valueFn: "_getGraph"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1319
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1320
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1321
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1322
     * Indicates whether or not markers for a series will be grouped and rendered in a single complex shape instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1323
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1324
     * @attribute groupMarkers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1325
     * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1326
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1327
    groupMarkers: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1328
        value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1329
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1330
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1331
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1332
ChartBase.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1333
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1334
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1335
     * Utility method to determine if `seriesKeys` was explicitly provided
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1336
     * (for example during construction, or set by the user), as opposed to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1337
     * being derived from the dataProvider for example.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1338
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1339
     * @method _wereSeriesKeysExplicitlySet
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1340
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1341
     * @return boolean true if the `seriesKeys` attribute was explicitly set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1342
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1343
    _wereSeriesKeysExplicitlySet : function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1344
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1345
        var seriesKeys = this.get("seriesKeys");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1346
        return seriesKeys && this._seriesKeysExplicitlySet;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1347
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1348
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1349
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1350
     * Handles groupMarkers change event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1351
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1352
     * @method _groupMarkersChangeHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1353
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1354
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1355
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1356
    _groupMarkersChangeHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1357
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1358
        var graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1359
            useGroupMarkers = e.newVal;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1360
        if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1361
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1362
            graph.set("groupMarkers", useGroupMarkers);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1363
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1364
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1365
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1366
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1367
     * Handler for itemRendered event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1368
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1369
     * @method _itemRendered
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1370
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1371
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1372
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1373
    _itemRendered: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1374
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1375
        this._itemRenderQueue = this._itemRenderQueue.splice(1 + Y.Array.indexOf(this._itemRenderQueue, e.currentTarget), 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1376
        if(this._itemRenderQueue.length < 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1377
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1378
            this._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1379
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1380
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1381
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1382
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1383
     * Default value function for the `Graph` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1384
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1385
     * @method _getGraph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1386
     * @return Graph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1387
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1388
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1389
    _getGraph: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1390
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1391
        var graph = new Y.Graph({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1392
            chart:this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1393
            groupMarkers: this.get("groupMarkers")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1394
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1395
        graph.after("chartRendered", Y.bind(function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1396
            this.fire("chartRendered");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1397
        }, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1398
        return graph;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1399
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1400
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1401
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1402
     * Returns a series instance by index or key value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1403
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1404
     * @method getSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1405
     * @param val
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1406
     * @return CartesianSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1407
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1408
    getSeries: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1409
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1410
        var series = null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1411
            graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1412
        if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1413
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1414
            if(Y_Lang.isNumber(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1415
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1416
                series = graph.getSeriesByIndex(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1417
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1418
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1419
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1420
                series = graph.getSeriesByKey(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1421
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1422
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1423
        return series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1424
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1425
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1426
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1427
     * Returns an `Axis` instance by key reference. If the axis was explicitly set through the `axes` attribute,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1428
     * the key will be the same as the key used in the `axes` object. For default axes, the key for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1429
     * the category axis is the value of the `categoryKey` (`category`). For the value axis, the default
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1430
     * key is `values`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1431
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1432
     * @method getAxisByKey
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1433
     * @param {String} val Key reference used to look up the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1434
     * @return Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1435
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1436
    getAxisByKey: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1437
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1438
        var axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1439
            axes = this.get("axes");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1440
        if(axes && axes.hasOwnProperty(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1441
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1442
            axis = axes[val];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1443
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1444
        return axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1445
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1446
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1447
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1448
     * Returns the category axis for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1449
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1450
     * @method getCategoryAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1451
     * @return Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1452
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1453
    getCategoryAxis: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1454
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1455
        var axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1456
            key = this.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1457
            axes = this.get("axes");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1458
        if(axes.hasOwnProperty(key))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1459
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1460
            axis = axes[key];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1461
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1462
        return axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1463
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1464
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1465
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1466
     * Default direction of the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1467
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1468
     * @property _direction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1469
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1470
     * @default horizontal
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1471
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1472
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1473
    _direction: "horizontal",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1474
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1475
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1476
     * Storage for the `dataProvider` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1477
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1478
     * @property _dataProvider
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1479
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1480
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1481
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1482
    _dataProvider: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1483
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1484
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1485
     * Setter method for `dataProvider` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1486
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1487
     * @method _setDataValues
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1488
     * @param {Array} val Array to be set as `dataProvider`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1489
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1490
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1491
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1492
    _setDataValues: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1493
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1494
        if(Y_Lang.isArray(val[0]))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1495
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1496
            var hash,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1497
                dp = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1498
                cats = val[0],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1499
                i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1500
                l = cats.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1501
                n,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1502
                sl = val.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1503
            for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1504
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1505
                hash = {category:cats[i]};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1506
                for(n = 1; n < sl; ++n)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1507
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1508
                    hash["series" + n] = val[n][i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1509
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1510
                dp[i] = hash;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1511
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1512
            return dp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1513
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1514
        return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1515
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1516
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1517
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1518
     * Storage for `seriesCollection` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1519
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1520
     * @property _seriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1521
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1522
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1523
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1524
    _seriesCollection: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1525
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1526
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1527
     * Setter method for `seriesCollection` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1528
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1529
     * @property _setSeriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1530
     * @param {Array} val Array of either `CartesianSeries` instances or objects containing series attribute key value pairs.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1531
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1532
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1533
    _setSeriesCollection: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1534
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1535
        this._seriesCollection = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1536
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1537
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1538
     * Helper method that returns the axis class that a key references.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1539
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1540
     * @method _getAxisClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1541
     * @param {String} t The type of axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1542
     * @return Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1543
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1544
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1545
    _getAxisClass: function(t)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1546
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1547
        return this._axisClass[t];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1548
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1549
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1550
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1551
     * Key value pairs of axis types.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1552
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1553
     * @property _axisClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1554
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1555
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1556
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1557
    _axisClass: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1558
        stacked: Y.StackedAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1559
        numeric: Y.NumericAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1560
        category: Y.CategoryAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1561
        time: Y.TimeAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1562
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1563
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1564
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1565
     * Collection of axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1566
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1567
     * @property _axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1568
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1569
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1570
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1571
    _axes: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1572
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1573
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1574
     * @method initializer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1575
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1576
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1577
    initializer: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1578
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1579
        this._itemRenderQueue = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1580
        this._seriesIndex = -1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1581
        this._itemIndex = -1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1582
        this.after("dataProviderChange", this._dataProviderChangeHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1583
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1584
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1585
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1586
     * @method renderUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1587
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1588
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1589
    renderUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1590
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1591
        var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1592
            bb = this.get("boundingBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1593
            cb = this.get("contentBox");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1594
        //move the position = absolute logic to a class file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1595
        bb.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1596
        cb.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1597
        this._addAxes();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1598
        this._addSeries();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1599
        if(tt && tt.show)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1600
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1601
            this._addTooltip();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1602
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1603
        this._setAriaElements(bb, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1604
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1605
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1606
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1607
     * Creates an aria `live-region`, `aria-label` and `aria-describedby` for the Chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1608
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1609
     * @method _setAriaElements
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1610
     * @param {Node} cb Reference to the Chart's `contentBox` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1611
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1612
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1613
    _setAriaElements: function(bb, cb)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1614
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1615
        var description = this._getAriaOffscreenNode(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1616
            id = this.get("id") + "_description",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1617
            liveRegion = this._getAriaOffscreenNode();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1618
        cb.set("tabIndex", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1619
        cb.set("role", "img");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1620
        cb.setAttribute("aria-label", this.get("ariaLabel"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1621
        cb.setAttribute("aria-describedby", id);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1622
        description.set("id", id);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1623
        description.set("tabIndex", -1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1624
        description.set("text", this.get("ariaDescription"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1625
        liveRegion.set("id", "live-region");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1626
        liveRegion.set("aria-live", "polite");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1627
        liveRegion.set("aria-atomic", "true");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1628
        liveRegion.set("role", "status");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1629
        bb.setAttribute("role", "application");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1630
        bb.appendChild(description);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1631
        bb.appendChild(liveRegion);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1632
        this._description = description;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1633
        this._liveRegion = liveRegion;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1634
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1635
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1636
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1637
     * Sets a node offscreen for use as aria-description or aria-live-regin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1638
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1639
     * @method _setOffscreen
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1640
     * @return Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1641
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1642
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1643
    _getAriaOffscreenNode: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1644
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1645
        var node = Y.Node.create("<div></div>"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1646
            ie = Y.UA.ie,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1647
            clipRect = (ie && ie < 8) ? "rect(1px 1px 1px 1px)" : "rect(1px, 1px, 1px, 1px)";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1648
        node.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1649
        node.setStyle("height", "1px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1650
        node.setStyle("width", "1px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1651
        node.setStyle("overflow", "hidden");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1652
        node.setStyle("clip", clipRect);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1653
        return node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1654
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1655
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1656
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1657
     * @method syncUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1658
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1659
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1660
    syncUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1661
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1662
        this._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1663
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1664
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1665
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1666
     * @method bindUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1667
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1668
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1669
    bindUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1670
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1671
        this.after("tooltipChange", Y.bind(this._tooltipChangeHandler, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1672
        this.after("widthChange", this._sizeChanged);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1673
        this.after("heightChange", this._sizeChanged);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1674
        this.after("groupMarkersChange", this._groupMarkersChangeHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1675
        var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1676
            hideEvent = "mouseout",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1677
            showEvent = "mouseover",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1678
            cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1679
            interactionType = this.get("interactionType"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1680
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1681
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1682
            markerClassName = "." + SERIES_MARKER,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1683
            isTouch = ((WINDOW && ("ontouchstart" in WINDOW)) && !(Y.UA.chrome && Y.UA.chrome < 6));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1684
        Y.on("keydown", Y.bind(function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1685
            var key = e.keyCode,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1686
                numKey = parseFloat(key),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1687
                msg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1688
            if(numKey > 36 && numKey < 41)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1689
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1690
                e.halt();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1691
                msg = this._getAriaMessage(numKey);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1692
                this._liveRegion.set("text", msg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1693
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1694
        }, this), this.get("contentBox"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1695
        if(interactionType === "marker")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1696
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1697
            //if touch capabilities, toggle tooltip on touchend. otherwise, the tooltip attribute's hideEvent/showEvent types.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1698
            hideEvent = tt.hideEvent;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1699
            showEvent = tt.showEvent;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1700
            if(isTouch)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1701
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1702
                Y.delegate("touchend", Y.bind(this._markerEventDispatcher, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1703
                //hide active tooltip if the chart is touched
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1704
                Y.on("touchend", Y.bind(function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1705
                    //only halt the event if it originated from the chart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1706
                    if(cb.contains(e.target))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1707
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1708
                        e.halt(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1709
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1710
                    if(this._activeMarker)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1711
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1712
                        this._activeMarker = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1713
                        this.hideTooltip(e);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1714
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1715
                }, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1716
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1717
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1718
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1719
                Y.delegate("mouseenter", Y.bind(this._markerEventDispatcher, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1720
                Y.delegate("mousedown", Y.bind(this._markerEventDispatcher, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1721
                Y.delegate("mouseup", Y.bind(this._markerEventDispatcher, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1722
                Y.delegate("mouseleave", Y.bind(this._markerEventDispatcher, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1723
                Y.delegate("click", Y.bind(this._markerEventDispatcher, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1724
                Y.delegate("mousemove", Y.bind(this._positionTooltip, this), cb, markerClassName);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1725
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1726
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1727
        else if(interactionType === "planar")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1728
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1729
            if(isTouch)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1730
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1731
                this._overlay.on("touchend", Y.bind(this._planarEventDispatcher, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1732
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1733
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1734
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1735
                this._overlay.on("mousemove", Y.bind(this._planarEventDispatcher, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1736
                this.on("mouseout", this.hideTooltip);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1737
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1738
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1739
        if(tt)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1740
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1741
            this.on("markerEvent:touchend", Y.bind(function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1742
                var marker = e.series.get("markers")[e.index];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1743
                if(this._activeMarker && marker === this._activeMarker)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1744
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1745
                    this._activeMarker = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1746
                    this.hideTooltip(e);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1747
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1748
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1749
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1750
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1751
                    this._activeMarker = marker;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1752
                    tt.markerEventHandler.apply(this, [e]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1753
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1754
            }, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1755
            if(hideEvent && showEvent && hideEvent === showEvent)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1756
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1757
                this.on(interactionType + "Event:" + hideEvent, this.toggleTooltip);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1758
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1759
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1760
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1761
                if(showEvent)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1762
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1763
                    this.on(interactionType + "Event:" + showEvent, tt[interactionType + "EventHandler"]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1764
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1765
                if(hideEvent)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1766
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1767
                    if(Y_Lang.isArray(hideEvent))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1768
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1769
                        len = hideEvent.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1770
                        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1771
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1772
                            this.on(interactionType + "Event:" + hideEvent[i], this.hideTooltip);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1773
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1774
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1775
                    this.on(interactionType + "Event:" + hideEvent, this.hideTooltip);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1776
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1777
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1778
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1779
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1780
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1781
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1782
     * Event handler for marker events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1783
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1784
     * @method _markerEventDispatcher
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1785
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1786
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1787
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1788
    _markerEventDispatcher: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1789
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1790
        var type = e.type,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1791
            cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1792
            markerNode = e.currentTarget,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1793
            strArr = markerNode.getAttribute("id").split("_"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1794
            index = strArr.pop(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1795
            seriesIndex = strArr.pop(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1796
            series = this.getSeries(parseInt(seriesIndex, 10)),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1797
            items = this.getSeriesItems(series, index),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1798
            isTouch = e && e.hasOwnProperty("changedTouches"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1799
            pageX = isTouch ? e.changedTouches[0].pageX : e.pageX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1800
            pageY = isTouch ? e.changedTouches[0].pageY : e.pageY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1801
            x = pageX - cb.getX(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1802
            y = pageY - cb.getY();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1803
        if(type === "mouseenter")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1804
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1805
            type = "mouseover";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1806
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1807
        else if(type === "mouseleave")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1808
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1809
            type = "mouseout";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1810
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1811
        series.updateMarkerState(type, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1812
        e.halt();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1813
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1814
         * Broadcasts when `interactionType` is set to `marker` and a series marker has received a mouseover event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1815
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1816
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1817
         * @event markerEvent:mouseover
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1818
         * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1819
         * @param {EventFacade} e Event facade with the following additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1820
         *   properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1821
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1822
         *      <dt>categoryItem</dt><dd>Hash containing information about the category `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1823
         *      <dt>valueItem</dt><dd>Hash containing information about the value `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1824
         *      <dt>node</dt><dd>The dom node of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1825
         *      <dt>x</dt><dd>The x-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1826
         *      <dt>y</dt><dd>The y-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1827
         *      <dt>series</dt><dd>Reference to the series of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1828
         *      <dt>index</dt><dd>Index of the marker in the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1829
         *      <dt>seriesIndex</dt><dd>The `order` of the marker's series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1830
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1831
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1832
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1833
         * Broadcasts when `interactionType` is set to `marker` and a series marker has received a mouseout event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1834
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1835
         * @event markerEvent:mouseout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1836
         * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1837
         * @param {EventFacade} e Event facade with the following additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1838
         *   properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1839
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1840
         *      <dt>categoryItem</dt><dd>Hash containing information about the category `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1841
         *      <dt>valueItem</dt><dd>Hash containing information about the value `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1842
         *      <dt>node</dt><dd>The dom node of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1843
         *      <dt>x</dt><dd>The x-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1844
         *      <dt>y</dt><dd>The y-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1845
         *      <dt>series</dt><dd>Reference to the series of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1846
         *      <dt>index</dt><dd>Index of the marker in the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1847
         *      <dt>seriesIndex</dt><dd>The `order` of the marker's series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1848
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1849
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1850
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1851
         * Broadcasts when `interactionType` is set to `marker` and a series marker has received a mousedown event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1852
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1853
         * @event markerEvent:mousedown
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1854
         * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1855
         * @param {EventFacade} e Event facade with the following additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1856
         *   properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1857
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1858
         *      <dt>categoryItem</dt><dd>Hash containing information about the category `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1859
         *      <dt>valueItem</dt><dd>Hash containing information about the value `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1860
         *      <dt>node</dt><dd>The dom node of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1861
         *      <dt>x</dt><dd>The x-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1862
         *      <dt>y</dt><dd>The y-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1863
         *      <dt>series</dt><dd>Reference to the series of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1864
         *      <dt>index</dt><dd>Index of the marker in the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1865
         *      <dt>seriesIndex</dt><dd>The `order` of the marker's series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1866
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1867
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1868
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1869
         * Broadcasts when `interactionType` is set to `marker` and a series marker has received a mouseup event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1870
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1871
         * @event markerEvent:mouseup
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1872
         * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1873
         * @param {EventFacade} e Event facade with the following additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1874
         *   properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1875
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1876
         *      <dt>categoryItem</dt><dd>Hash containing information about the category `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1877
         *      <dt>valueItem</dt><dd>Hash containing information about the value `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1878
         *      <dt>node</dt><dd>The dom node of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1879
         *      <dt>x</dt><dd>The x-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1880
         *      <dt>y</dt><dd>The y-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1881
         *      <dt>series</dt><dd>Reference to the series of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1882
         *      <dt>index</dt><dd>Index of the marker in the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1883
         *      <dt>seriesIndex</dt><dd>The `order` of the marker's series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1884
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1885
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1886
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1887
         * Broadcasts when `interactionType` is set to `marker` and a series marker has received a click event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1888
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1889
         * @event markerEvent:click
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1890
         * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1891
         * @param {EventFacade} e Event facade with the following additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1892
         *   properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1893
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1894
         *      <dt>categoryItem</dt><dd>Hash containing information about the category `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1895
         *      <dt>valueItem</dt><dd>Hash containing information about the value `Axis`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1896
         *      <dt>node</dt><dd>The dom node of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1897
         *      <dt>x</dt><dd>The x-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1898
         *      <dt>y</dt><dd>The y-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1899
         *      <dt>pageX</dt><dd>The x location of the event on the page (including scroll)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1900
         *      <dt>pageY</dt><dd>The y location of the event on the page (including scroll)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1901
         *      <dt>series</dt><dd>Reference to the series of the marker.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1902
         *      <dt>index</dt><dd>Index of the marker in the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1903
         *      <dt>seriesIndex</dt><dd>The `order` of the marker's series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1904
         *      <dt>originEvent</dt><dd>Underlying dom event.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1905
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1906
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1907
        this.fire("markerEvent:" + type, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1908
            originEvent: e,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1909
            pageX:pageX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1910
            pageY:pageY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1911
            categoryItem:items.category,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1912
            valueItem:items.value,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1913
            node:markerNode,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1914
            x:x,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1915
            y:y,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1916
            series:series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1917
            index:index,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1918
            seriesIndex:seriesIndex
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1919
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1920
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1921
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1922
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1923
     * Event handler for dataProviderChange.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1924
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1925
     * @method _dataProviderChangeHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1926
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1927
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1928
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1929
    _dataProviderChangeHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1930
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1931
        var dataProvider = e.newVal,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1932
            axes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1933
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1934
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1935
        this._seriesIndex = -1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1936
        this._itemIndex = -1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1937
        if(this instanceof Y.CartesianChart)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1938
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1939
            this.set("axes", this.get("axes"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1940
            this.set("seriesCollection", this.get("seriesCollection"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1941
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1942
        axes = this.get("axes");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1943
        if(axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1944
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1945
            for(i in axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1946
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1947
                if(axes.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1948
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1949
                    axis = axes[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1950
                    if(axis instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1951
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1952
                        if(axis.get("position") !== "none")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1953
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1954
                            this._addToAxesRenderQueue(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1955
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1956
                        axis.set("dataProvider", dataProvider);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1957
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1958
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1959
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1960
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1961
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1962
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1963
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1964
     * Event listener for toggling the tooltip. If a tooltip is visible, hide it. If not, it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1965
     * will create and show a tooltip based on the event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1966
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1967
     * @method toggleTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1968
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1969
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1970
    toggleTooltip: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1971
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1972
        var tt = this.get("tooltip");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1973
        if(tt.visible)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1974
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1975
            this.hideTooltip();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1976
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1977
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1978
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1979
            tt.markerEventHandler.apply(this, [e]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1980
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1981
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1982
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1983
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1984
     * Shows a tooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1985
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1986
     * @method _showTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1987
     * @param {String} msg Message to dispaly in the tooltip.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1988
     * @param {Number} x x-coordinate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1989
     * @param {Number} y y-coordinate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1990
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1991
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1992
    _showTooltip: function(msg, x, y)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1993
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1994
        var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1995
            node = tt.node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1996
        if(msg)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1997
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1998
            tt.visible = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1999
            tt.setTextFunction(node, msg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2000
            node.setStyle("top", y + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2001
            node.setStyle("left", x + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2002
            node.setStyle("visibility", "visible");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2003
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2004
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2005
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2006
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2007
     * Positions the tooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2008
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2009
     * @method _positionTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2010
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2011
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2012
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2013
    _positionTooltip: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2014
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2015
        var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2016
            node = tt.node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2017
            cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2018
            x = (e.pageX + 10) - cb.getX(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2019
            y = (e.pageY + 10) - cb.getY();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2020
        if(node)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2021
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2022
            node.setStyle("left", x + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2023
            node.setStyle("top", y + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2024
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2025
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2026
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2027
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2028
     * Hides the default tooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2029
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2030
     * @method hideTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2031
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2032
    hideTooltip: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2033
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2034
        var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2035
            node = tt.node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2036
        tt.visible = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2037
        node.set("innerHTML", "");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2038
        node.setStyle("left", -10000);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2039
        node.setStyle("top", -10000);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2040
        node.setStyle("visibility", "hidden");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2041
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2042
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2043
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2044
     * Adds a tooltip to the dom.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2045
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2046
     * @method _addTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2047
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2048
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2049
    _addTooltip: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2050
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2051
        var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2052
            id = this.get("id") + "_tooltip",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2053
            cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2054
            oldNode = DOCUMENT.getElementById(id);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2055
        if(oldNode)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2056
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2057
            cb.removeChild(oldNode);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2058
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2059
        tt.node.set("id", id);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2060
        tt.node.setStyle("visibility", "hidden");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2061
        cb.appendChild(tt.node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2062
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2063
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2064
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2065
     * Updates the tooltip attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2066
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2067
     * @method _updateTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2068
     * @param {Object} val Object containing properties for the tooltip.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2069
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2070
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2071
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2072
    _updateTooltip: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2073
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2074
        var tt = this.get("tooltip") || this._getTooltip(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2075
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2076
            styles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2077
            node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2078
            props = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2079
                markerLabelFunction:"markerLabelFunction",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2080
                planarLabelFunction:"planarLabelFunction",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2081
                setTextFunction:"setTextFunction",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2082
                showEvent:"showEvent",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2083
                hideEvent:"hideEvent",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2084
                markerEventHandler:"markerEventHandler",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2085
                planarEventHandler:"planarEventHandler",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2086
                show:"show"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2087
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2088
        if(Y_Lang.isObject(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2089
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2090
            styles = val.styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2091
            if(val.node && tt.node)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2092
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2093
                tt.node.destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2094
                node = Y.one(val.node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2095
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2096
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2097
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2098
                node = tt.node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2099
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2100
            if(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2101
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2102
                for(i in styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2103
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2104
                    if(styles.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2105
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2106
                        node.setStyle(i, styles[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2107
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2108
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2109
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2110
            for(i in props)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2111
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2112
                if(val.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2113
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2114
                    tt[i] = val[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2115
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2116
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2117
            tt.node = node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2118
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2119
        return tt;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2120
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2121
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2122
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2123
     * Default getter for `tooltip` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2124
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2125
     * @method _getTooltip
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2126
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2127
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2128
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2129
    _getTooltip: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2130
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2131
        var node = DOCUMENT.createElement("div"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2132
            tooltipClass = _getClassName("chart-tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2133
            tt = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2134
                setTextFunction: this._setText,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2135
                markerLabelFunction: this._tooltipLabelFunction,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2136
                planarLabelFunction: this._planarLabelFunction,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2137
                show: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2138
                hideEvent: "mouseout",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2139
                showEvent: "mouseover",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2140
                markerEventHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2141
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2142
                    var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2143
                    msg = tt.markerLabelFunction.apply(this, [e.categoryItem, e.valueItem, e.index, e.series, e.seriesIndex]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2144
                    this._showTooltip(msg, e.x + 10, e.y + 10);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2145
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2146
                planarEventHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2147
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2148
                    var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2149
                        msg ,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2150
                        categoryAxis = this.get("categoryAxis");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2151
                    msg = tt.planarLabelFunction.apply(this, [categoryAxis, e.valueItem, e.index, e.items, e.seriesIndex]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2152
                    this._showTooltip(msg, e.x + 10, e.y + 10);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2153
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2154
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2155
        node = Y.one(node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2156
        node.set("id", this.get("id") + "_tooltip");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2157
        node.setStyle("fontSize", "85%");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2158
        node.setStyle("opacity", "0.83");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2159
        node.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2160
        node.setStyle("paddingTop", "2px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2161
        node.setStyle("paddingRight", "5px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2162
        node.setStyle("paddingBottom", "4px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2163
        node.setStyle("paddingLeft", "2px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2164
        node.setStyle("backgroundColor", "#fff");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2165
        node.setStyle("border", "1px solid #dbdccc");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2166
        node.setStyle("pointerEvents", "none");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2167
        node.setStyle("zIndex", 3);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2168
        node.setStyle("whiteSpace", "noWrap");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2169
        node.setStyle("visibility", "hidden");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2170
        node.addClass(tooltipClass);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2171
        tt.node = Y.one(node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2172
        return tt;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2173
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2174
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2175
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2176
     * Formats tooltip text when `interactionType` is `planar`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2177
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2178
     * @method _planarLabelFunction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2179
     * @param {Axis} categoryAxis Reference to the categoryAxis of the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2180
     * @param {Array} valueItems Array of objects for each series that has a data point in the coordinate plane of the event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2181
     * Each object contains the following data:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2182
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2183
     *      <dt>axis</dt><dd>The value axis of the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2184
     *      <dt>key</dt><dd>The key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2185
     *      <dt>value</dt><dd>The value for the series item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2186
     *      <dt>displayName</dt><dd>The display name of the series. (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2187
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2188
     *  @param {Number} index The index of the item within its series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2189
     *  @param {Array} seriesArray Array of series instances for each value item.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2190
     *  @param {Number} seriesIndex The index of the series in the `seriesCollection`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2191
     *  @return {HTMLElement}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2192
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2193
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2194
    _planarLabelFunction: function(categoryAxis, valueItems, index, seriesArray)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2195
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2196
        var msg = DOCUMENT.createElement("div"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2197
            valueItem,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2198
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2199
            len = seriesArray.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2200
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2201
            categoryValue,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2202
            seriesValue,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2203
            series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2204
        if(categoryAxis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2205
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2206
            categoryValue = categoryAxis.get("labelFunction").apply(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2207
                this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2208
                [categoryAxis.getKeyValueAt(this.get("categoryKey"), index), categoryAxis.get("labelFormat")]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2209
            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2210
            if(!Y_Lang.isObject(categoryValue))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2211
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2212
                categoryValue = DOCUMENT.createTextNode(categoryValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2213
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2214
            msg.appendChild(categoryValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2215
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2216
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2217
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2218
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2219
            series = seriesArray[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2220
            if(series.get("visible"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2221
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2222
                valueItem = valueItems[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2223
                axis = valueItem.axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2224
                seriesValue =  axis.get("labelFunction").apply(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2225
                    this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2226
                    [axis.getKeyValueAt(valueItem.key, index), axis.get("labelFormat")]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2227
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2228
                msg.appendChild(DOCUMENT.createElement("br"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2229
                msg.appendChild(DOCUMENT.createTextNode(valueItem.displayName));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2230
                msg.appendChild(DOCUMENT.createTextNode(": "));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2231
                if(!Y_Lang.isObject(seriesValue))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2232
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2233
                    seriesValue = DOCUMENT.createTextNode(seriesValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2234
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2235
                msg.appendChild(seriesValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2236
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2237
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2238
        return msg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2239
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2240
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2241
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2242
     * Formats tooltip text when `interactionType` is `marker`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2243
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2244
     * @method _tooltipLabelFunction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2245
     * @param {Object} categoryItem An object containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2246
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2247
     *      <dt>axis</dt><dd>The axis to which the category is bound.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2248
     *      <dt>displayName</dt><dd>The display name set to the category (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2249
     *      <dt>key</dt><dd>The key of the category.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2250
     *      <dt>value</dt><dd>The value of the category</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2251
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2252
     * @param {Object} valueItem An object containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2253
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2254
     *      <dt>axis</dt><dd>The axis to which the item's series is bound.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2255
     *      <dt>displayName</dt><dd>The display name of the series. (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2256
     *      <dt>key</dt><dd>The key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2257
     *      <dt>value</dt><dd>The value for the series item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2258
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2259
     * @return {HTMLElement}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2260
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2261
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2262
    _tooltipLabelFunction: function(categoryItem, valueItem)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2263
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2264
        var msg = DOCUMENT.createElement("div"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2265
            categoryValue = categoryItem.axis.get("labelFunction").apply(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2266
                this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2267
                [categoryItem.value, categoryItem.axis.get("labelFormat")]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2268
            ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2269
            seriesValue = valueItem.axis.get("labelFunction").apply(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2270
                this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2271
                [valueItem.value, valueItem.axis.get("labelFormat")]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2272
            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2273
        msg.appendChild(DOCUMENT.createTextNode(categoryItem.displayName));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2274
        msg.appendChild(DOCUMENT.createTextNode(": "));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2275
        if(!Y_Lang.isObject(categoryValue))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2276
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2277
            categoryValue = DOCUMENT.createTextNode(categoryValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2278
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2279
        msg.appendChild(categoryValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2280
        msg.appendChild(DOCUMENT.createElement("br"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2281
        msg.appendChild(DOCUMENT.createTextNode(valueItem.displayName));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2282
        msg.appendChild(DOCUMENT.createTextNode(": "));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2283
        if(!Y_Lang.isObject(seriesValue))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2284
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2285
            seriesValue = DOCUMENT.createTextNode(seriesValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2286
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2287
        msg.appendChild(seriesValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2288
        return msg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2289
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2290
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2291
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2292
     * Event handler for the tooltipChange.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2293
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2294
     * @method _tooltipChangeHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2295
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2296
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2297
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2298
    _tooltipChangeHandler: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2299
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2300
        if(this.get("tooltip"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2301
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2302
            var tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2303
                node = tt.node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2304
                show = tt.show,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2305
                cb = this.get("contentBox");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2306
            if(node && show)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2307
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2308
                if(!cb.contains(node))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2309
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2310
                    this._addTooltip();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2311
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2312
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2313
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2314
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2315
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2316
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2317
     * Updates the content of text field. This method writes a value into a text field using
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2318
     * `appendChild`. If the value is a `String`, it is converted to a `TextNode` first.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2319
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2320
     * @method _setText
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2321
     * @param label {HTMLElement} label to be updated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2322
     * @param val {String} value with which to update the label
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2323
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2324
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2325
    _setText: function(textField, val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2326
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2327
        textField.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2328
        if(Y_Lang.isNumber(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2329
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2330
            val = val + "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2331
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2332
        else if(!val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2333
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2334
            val = "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2335
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2336
        if(IS_STRING(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2337
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2338
            val = DOCUMENT.createTextNode(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2339
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2340
        textField.appendChild(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2341
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2342
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2343
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2344
     * Returns all the keys contained in a  `dataProvider`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2345
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2346
     * @method _getAllKeys
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2347
     * @param {Array} dp Collection of objects to be parsed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2348
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2349
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2350
    _getAllKeys: function(dp)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2351
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2352
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2353
            len = dp.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2354
            item,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2355
            key,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2356
            keys = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2357
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2358
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2359
            item = dp[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2360
            for(key in item)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2361
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2362
                if(item.hasOwnProperty(key))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2363
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2364
                    keys[key] = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2365
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2366
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2367
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2368
        return keys;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2369
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2370
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2371
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2372
     * Constructs seriesKeys if not explicitly specified.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2373
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2374
     * @method _buildSeriesKeys
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2375
     * @param {Array} dataProvider The dataProvider for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2376
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2377
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2378
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2379
    _buildSeriesKeys: function(dataProvider)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2380
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2381
        var allKeys,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2382
            catKey = this.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2383
            keys = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2384
            i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2385
        if(this._seriesKeysExplicitlySet)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2386
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2387
            return this._seriesKeys;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2388
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2389
        allKeys = this._getAllKeys(dataProvider);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2390
        for(i in allKeys)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2391
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2392
            if(allKeys.hasOwnProperty(i) && i !== catKey)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2393
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2394
                keys.push(i);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2395
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2396
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2397
        return keys;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2398
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2399
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2400
Y.ChartBase = ChartBase;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2401
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2402
 * The CartesianChart class creates a chart with horizontal and vertical axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2403
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2404
 * @class CartesianChart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2405
 * @extends ChartBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2406
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2407
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2408
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2409
Y.CartesianChart = Y.Base.create("cartesianChart", Y.Widget, [Y.ChartBase, Y.Renderer], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2410
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2411
     * @method renderUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2412
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2413
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2414
    renderUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2415
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2416
        var bb = this.get("boundingBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2417
            cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2418
            tt = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2419
            overlayClass = _getClassName("overlay");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2420
        //move the position = absolute logic to a class file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2421
        bb.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2422
        cb.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2423
        this._addAxes();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2424
        this._addGridlines();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2425
        this._addSeries();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2426
        if(tt && tt.show)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2427
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2428
            this._addTooltip();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2429
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2430
        if(this.get("interactionType") === "planar")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2431
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2432
            this._overlay = Y.Node.create("<div></div>");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2433
            this._overlay.set("id", this.get("id") + "_overlay");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2434
            this._overlay.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2435
            this._overlay.setStyle("background", "#fff");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2436
            this._overlay.setStyle("opacity", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2437
            this._overlay.addClass(overlayClass);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2438
            this._overlay.setStyle("zIndex", 4);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2439
            cb.append(this._overlay);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2440
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2441
        this._setAriaElements(bb, cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2442
        this._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2443
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2444
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2445
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2446
     * When `interactionType` is set to `planar`, listens for mouse move events and fires `planarEvent:mouseover` or `planarEvent:mouseout`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2447
     * depending on the position of the mouse in relation to data points on the `Chart`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2448
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2449
     * @method _planarEventDispatcher
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2450
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2451
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2452
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2453
    _planarEventDispatcher: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2454
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2455
        var graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2456
            bb = this.get("boundingBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2457
            cb = graph.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2458
            isTouch = e && e.hasOwnProperty("changedTouches"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2459
            pageX = isTouch ? e.changedTouches[0].pageX : e.pageX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2460
            pageY = isTouch ? e.changedTouches[0].pageY : e.pageY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2461
            posX = pageX - bb.getX(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2462
            posY = pageY - bb.getY(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2463
            offset = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2464
                x: pageX - cb.getX(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2465
                y: pageY - cb.getY()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2466
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2467
            sc = graph.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2468
            series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2469
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2470
            index,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2471
            oldIndex = this._selectedIndex,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2472
            item,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2473
            items = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2474
            categoryItems = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2475
            valueItems = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2476
            direction = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2477
            hasMarkers,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2478
            catAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2479
            valAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2480
            coord,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2481
            //data columns and area data could be created on a graph level
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2482
            markerPlane,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2483
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2484
            coords;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2485
        e.halt(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2486
        if(direction === "horizontal")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2487
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2488
            catAxis = "x";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2489
            valAxis = "y";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2490
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2491
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2492
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2493
            valAxis = "x";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2494
            catAxis = "y";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2495
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2496
        coord = offset[catAxis];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2497
        if(sc)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2498
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2499
            len = sc.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2500
            while(i < len && !markerPlane)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2501
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2502
                if(sc[i])
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2503
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2504
                    markerPlane = sc[i].get(catAxis + "MarkerPlane");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2505
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2506
                i++;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2507
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2508
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2509
        if(markerPlane)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2510
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2511
            len = markerPlane.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2512
            for(i = 0; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2513
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2514
                if(coord <= markerPlane[i].end && coord >= markerPlane[i].start)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2515
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2516
                    index = i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2517
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2518
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2519
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2520
            len = sc.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2521
            for(i = 0; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2522
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2523
                series = sc[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2524
                coords = series.get(valAxis + "coords");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2525
                hasMarkers = series.get("markers");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2526
                if(hasMarkers && !isNaN(oldIndex) && oldIndex > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2527
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2528
                    series.updateMarkerState("mouseout", oldIndex);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2529
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2530
                if(coords && coords[index] > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2531
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2532
                    if(hasMarkers && !isNaN(index) && index > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2533
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2534
                        series.updateMarkerState("mouseover", index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2535
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2536
                    item = this.getSeriesItems(series, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2537
                    categoryItems.push(item.category);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2538
                    valueItems.push(item.value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2539
                    items.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2540
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2541
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2542
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2543
            this._selectedIndex = index;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2544
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2545
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2546
             * Broadcasts when `interactionType` is set to `planar` and a series' marker plane has received a mouseover event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2547
             *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2548
             *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2549
             * @event planarEvent:mouseover
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2550
             * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2551
             * @param {EventFacade} e Event facade with the following additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2552
             *   properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2553
             *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2554
             *      <dt>categoryItem</dt><dd>An array of hashes, each containing information about the category `Axis` of each marker
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2555
             *      whose plane has been intersected.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2556
             *      <dt>valueItem</dt><dd>An array of hashes, each containing information about the value `Axis` of each marker whose
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2557
             *      plane has been intersected.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2558
             *      <dt>x</dt><dd>The x-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2559
             *      <dt>y</dt><dd>The y-coordinate of the mouse in relation to the Chart.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2560
             *      <dt>pageX</dt><dd>The x location of the event on the page (including scroll)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2561
             *      <dt>pageY</dt><dd>The y location of the event on the page (including scroll)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2562
             *      <dt>items</dt><dd>An array including all the series which contain a marker whose plane has been intersected.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2563
             *      <dt>index</dt><dd>Index of the markers in their respective series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2564
             *      <dt>originEvent</dt><dd>Underlying dom event.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2565
             *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2566
             */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2567
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2568
             * Broadcasts when `interactionType` is set to `planar` and a series' marker plane has received a mouseout event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2569
             *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2570
             * @event planarEvent:mouseout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2571
             * @preventable false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2572
             * @param {EventFacade} e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2573
             */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2574
            if(index > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2575
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2576
                this.fire("planarEvent:mouseover", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2577
                    categoryItem:categoryItems,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2578
                    valueItem:valueItems,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2579
                    x:posX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2580
                    y:posY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2581
                    pageX:pageX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2582
                    pageY:pageY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2583
                    items:items,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2584
                    index:index,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2585
                    originEvent:e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2586
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2587
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2588
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2589
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2590
                this.fire("planarEvent:mouseout");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2591
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2592
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2593
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2594
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2595
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2596
     * Indicates the default series type for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2597
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2598
     * @property _type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2599
     * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2600
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2601
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2602
    _type: "combo",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2603
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2604
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2605
     * Queue of axes instances that will be updated. This method is used internally to determine when all axes have been updated.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2606
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2607
     * @property _itemRenderQueue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2608
     * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2609
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2610
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2611
    _itemRenderQueue: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2612
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2613
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2614
     * Adds an `Axis` instance to the `_itemRenderQueue`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2615
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2616
     * @method _addToAxesRenderQueue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2617
     * @param {Axis} axis An `Axis` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2618
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2619
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2620
    _addToAxesRenderQueue: function(axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2621
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2622
        if(!this._itemRenderQueue)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2623
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2624
            this._itemRenderQueue = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2625
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2626
        if(Y.Array.indexOf(this._itemRenderQueue, axis) < 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2627
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2628
            this._itemRenderQueue.push(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2629
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2630
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2631
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2632
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2633
     * Adds axis instance to the appropriate array based on position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2634
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2635
     * @method _addToAxesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2636
     * @param {String} position The position of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2637
     * @param {Axis} axis The `Axis` instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2638
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2639
    _addToAxesCollection: function(position, axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2640
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2641
        var axesCollection = this.get(position + "AxesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2642
        if(!axesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2643
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2644
            axesCollection = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2645
            this.set(position + "AxesCollection", axesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2646
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2647
        axesCollection.push(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2648
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2649
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2650
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2651
     * Returns the default value for the `seriesCollection` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2652
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2653
     * @method _getDefaultSeriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2654
     * @param {Array} val Array containing either `CartesianSeries` instances or objects containing data to construct series instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2655
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2656
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2657
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2658
    _getDefaultSeriesCollection: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2659
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2660
        var seriesCollection,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2661
            dataProvider = this.get("dataProvider");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2662
        if(dataProvider)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2663
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2664
            seriesCollection = this._parseSeriesCollection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2665
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2666
        return seriesCollection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2667
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2668
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2669
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2670
     * Parses and returns a series collection from an object and default properties.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2671
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2672
     * @method _parseSeriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2673
     * @param {Object} val Object contain properties for series being set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2674
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2675
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2676
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2677
    _parseSeriesCollection: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2678
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2679
        var dir = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2680
            seriesStyles = this.get("styles").series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2681
            stylesAreArray = seriesStyles && Y_Lang.isArray(seriesStyles),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2682
            stylesIndex,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2683
            setStyles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2684
            globalStyles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2685
            sc = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2686
            catAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2687
            valAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2688
            tempKeys = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2689
            series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2690
            seriesKeys = this.get("seriesKeys").concat(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2691
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2692
            index,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2693
            l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2694
            type = this.get("type"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2695
            key,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2696
            catKey,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2697
            seriesKey,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2698
            graph,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2699
            orphans = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2700
            categoryKey = this.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2701
            showMarkers = this.get("showMarkers"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2702
            showAreaFill = this.get("showAreaFill"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2703
            showLines = this.get("showLines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2704
        val = val ? val.concat() : [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2705
        if(dir === "vertical")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2706
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2707
            catAxis = "yAxis";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2708
            catKey = "yKey";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2709
            valAxis = "xAxis";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2710
            seriesKey = "xKey";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2711
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2712
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2713
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2714
            catAxis = "xAxis";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2715
            catKey = "xKey";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2716
            valAxis = "yAxis";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2717
            seriesKey = "yKey";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2718
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2719
        l = val.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2720
        while(val && val.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2721
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2722
            series = val.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2723
            key = this._getBaseAttribute(series, seriesKey);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2724
            if(key)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2725
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2726
                index = Y.Array.indexOf(seriesKeys, key);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2727
                if(index > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2728
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2729
                    seriesKeys.splice(index, 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2730
                    tempKeys.push(key);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2731
                    sc.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2732
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2733
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2734
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2735
                    orphans.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2736
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2737
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2738
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2739
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2740
                orphans.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2741
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2742
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2743
        while(orphans.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2744
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2745
            series = orphans.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2746
            if(seriesKeys.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2747
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2748
                key = seriesKeys.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2749
                this._setBaseAttribute(series, seriesKey, key);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2750
                tempKeys.push(key);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2751
                sc.push(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2752
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2753
            else if(series instanceof Y.CartesianSeries)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2754
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2755
                series.destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2756
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2757
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2758
        if(seriesKeys.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2759
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2760
            tempKeys = tempKeys.concat(seriesKeys);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2761
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2762
        l = tempKeys.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2763
        for(i = 0; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2764
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2765
            series = sc[i] || {type:type};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2766
            if(series instanceof Y.CartesianSeries)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2767
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2768
                this._parseSeriesAxes(series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2769
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2770
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2771
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2772
                series[catKey] = series[catKey] || categoryKey;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2773
                series[seriesKey] = series[seriesKey] || seriesKeys.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2774
                series[catAxis] = this._getCategoryAxis();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2775
                series[valAxis] = this._getSeriesAxis(series[seriesKey]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2776
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2777
                series.type = series.type || type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2778
                series.direction = series.direction || dir;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2779
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2780
                if(series.type === "combo" ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2781
                    series.type === "stackedcombo" ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2782
                    series.type === "combospline" ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2783
                    series.type === "stackedcombospline")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2784
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2785
                    if(showAreaFill !== null)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2786
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2787
                        series.showAreaFill = (series.showAreaFill !== null && series.showAreaFill !== undefined) ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2788
                                               series.showAreaFill : showAreaFill;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2789
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2790
                    if(showMarkers !== null)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2791
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2792
                        series.showMarkers = (series.showMarkers !== null && series.showMarkers !== undefined) ? series.showMarkers : showMarkers;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2793
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2794
                    if(showLines !== null)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2795
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2796
                        series.showLines = (series.showLines !== null && series.showLines !== undefined) ? series.showLines : showLines;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2797
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2798
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2799
                if(seriesStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2800
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2801
                    stylesIndex = stylesAreArray ? i : series[seriesKey];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2802
                    globalStyles = seriesStyles[stylesIndex];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2803
                    if(globalStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2804
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2805
                        setStyles = series.styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2806
                        if(setStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2807
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2808
                            series.styles = this._mergeStyles(setStyles, globalStyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2809
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2810
                        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2811
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2812
                            series.styles = globalStyles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2813
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2814
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2815
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2816
                sc[i] = series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2817
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2818
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2819
        if(sc)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2820
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2821
            graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2822
            graph.set("seriesCollection", sc);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2823
            sc = graph.get("seriesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2824
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2825
        return sc;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2826
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2827
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2828
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2829
     * Parse and sets the axes for a series instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2830
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2831
     * @method _parseSeriesAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2832
     * @param {CartesianSeries} series A `CartesianSeries` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2833
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2834
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2835
    _parseSeriesAxes: function(series)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2836
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2837
        var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2838
            xAxis = series.get("xAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2839
            yAxis = series.get("yAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2840
            YAxis = Y.Axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2841
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2842
        if(xAxis && !(xAxis instanceof YAxis) && Y_Lang.isString(xAxis) && axes.hasOwnProperty(xAxis))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2843
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2844
            axis = axes[xAxis];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2845
            if(axis instanceof YAxis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2846
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2847
                series.set("xAxis", axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2848
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2849
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2850
        if(yAxis && !(yAxis instanceof YAxis) && Y_Lang.isString(yAxis) && axes.hasOwnProperty(yAxis))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2851
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2852
            axis = axes[yAxis];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2853
            if(axis instanceof YAxis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2854
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2855
                series.set("yAxis", axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2856
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2857
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2858
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2859
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2860
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2861
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2862
     * Returns the category axis instance for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2863
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2864
     * @method _getCategoryAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2865
     * @return Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2866
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2867
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2868
    _getCategoryAxis: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2869
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2870
        var axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2871
            axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2872
            categoryAxisName = this.get("categoryAxisName") || this.get("categoryKey");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2873
        axis = axes[categoryAxisName];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2874
        return axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2875
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2876
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2877
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2878
     * Returns the value axis for a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2879
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2880
     * @method _getSeriesAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2881
     * @param {String} key The key value used to determine the axis instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2882
     * @return Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2883
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2884
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2885
    _getSeriesAxis:function(key, axisName)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2886
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2887
        var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2888
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2889
            keys,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2890
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2891
        if(axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2892
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2893
            if(axisName && axes.hasOwnProperty(axisName))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2894
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2895
                axis = axes[axisName];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2896
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2897
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2898
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2899
                for(i in axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2900
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2901
                    if(axes.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2902
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2903
                        keys = axes[i].get("keys");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2904
                        if(keys && keys.hasOwnProperty(key))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2905
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2906
                            axis = axes[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2907
                            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2908
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2909
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2910
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2911
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2912
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2913
        return axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2914
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2915
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2916
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2917
     * Gets an attribute from an object, using a getter for Base objects and a property for object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2918
     * literals. Used for determining attributes from series/axis references which can be an actual class instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2919
     * or a hash of properties that will be used to create a class instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2920
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2921
     * @method _getBaseAttribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2922
     * @param {Object} item Object or instance in which the attribute resides.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2923
     * @param {String} key Attribute whose value will be returned.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2924
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2925
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2926
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2927
    _getBaseAttribute: function(item, key)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2928
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2929
        if(item instanceof Y.Base)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2930
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2931
            return item.get(key);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2932
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2933
        if(item.hasOwnProperty(key))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2934
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2935
            return item[key];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2936
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2937
        return null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2938
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2939
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2940
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2941
     * Sets an attribute on an object, using a setter of Base objects and a property for object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2942
     * literals. Used for setting attributes on a Base class, either directly or to be stored in an object literal
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2943
     * for use at instantiation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2944
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2945
     * @method _setBaseAttribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2946
     * @param {Object} item Object or instance in which the attribute resides.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2947
     * @param {String} key Attribute whose value will be assigned.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2948
     * @param {Object} value Value to be assigned to the attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2949
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2950
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2951
    _setBaseAttribute: function(item, key, value)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2952
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2953
        if(item instanceof Y.Base)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2954
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2955
            item.set(key, value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2956
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2957
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2958
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2959
            item[key] = value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2960
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2961
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2962
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2963
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2964
     * Creates `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2965
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2966
     * @method _setAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2967
     * @param {Object} val Object containing `Axis` instances or objects in which to construct `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2968
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2969
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2970
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2971
    _setAxes: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2972
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2973
        var hash = this._parseAxes(val),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2974
            axes = {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2975
            axesAttrs = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2976
                edgeOffset: "edgeOffset",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2977
                calculateEdgeOffset: "calculateEdgeOffset",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2978
                position: "position",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2979
                overlapGraph:"overlapGraph",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2980
                labelValues: "labelValues",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2981
                hideFirstMajorUnit: "hideFirstMajorUnit",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2982
                hideLastMajorUnit: "hideLastMajorUnit",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2983
                labelFunction:"labelFunction",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2984
                labelFunctionScope:"labelFunctionScope",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2985
                labelFormat:"labelFormat",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2986
                appendLabelFunction: "appendLabelFunction",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2987
                appendTitleFunction: "appendTitleFunction",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2988
                maximum:"maximum",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2989
                minimum:"minimum",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2990
                roundingMethod:"roundingMethod",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2991
                alwaysShowZero:"alwaysShowZero",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2992
                scaleType: "scaleType",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2993
                title:"title",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2994
                width:"width",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2995
                height:"height"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2996
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2997
            dp = this.get("dataProvider"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2998
            ai,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2999
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3000
            pos,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3001
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3002
            axisPosition,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3003
            dh,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3004
            AxisClass,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3005
            config,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3006
            axesCollection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3007
        for(i in hash)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3008
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3009
            if(hash.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3010
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3011
                dh = hash[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3012
                if(dh instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3013
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3014
                    axis = dh;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3015
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3016
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3017
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3018
                    axis = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3019
                    config = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3020
                    config.dataProvider = dh.dataProvider || dp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3021
                    config.keys = dh.keys;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3022
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3023
                    if(dh.hasOwnProperty("roundingUnit"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3024
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3025
                        config.roundingUnit = dh.roundingUnit;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3026
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3027
                    pos = dh.position;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3028
                    if(dh.styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3029
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3030
                        config.styles = dh.styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3031
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3032
                    config.position = dh.position;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3033
                    for(ai in axesAttrs)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3034
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3035
                        if(axesAttrs.hasOwnProperty(ai) && dh.hasOwnProperty(ai))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3036
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3037
                            config[ai] = dh[ai];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3038
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3039
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3040
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3041
                    //only check for existing axis if we constructed the default axes already
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3042
                    if(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3043
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3044
                        axis = this.getAxisByKey(i);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3045
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3046
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3047
                    if(axis && axis instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3048
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3049
                        axisPosition = axis.get("position");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3050
                        if(pos !== axisPosition)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3051
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3052
                            if(axisPosition !== "none")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3053
                            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3054
                                axesCollection = this.get(axisPosition + "AxesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3055
                                axesCollection.splice(Y.Array.indexOf(axesCollection, axis), 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3056
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3057
                            if(pos !== "none")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3058
                            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3059
                                this._addToAxesCollection(pos, axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3060
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3061
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3062
                        axis.setAttrs(config);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3063
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3064
                    else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3065
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3066
                        AxisClass = this._getAxisClass(dh.type);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3067
                        axis = new AxisClass(config);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3068
                        axis.after("axisRendered", Y.bind(this._itemRendered, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3069
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3070
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3071
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3072
                if(axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3073
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3074
                    axesCollection = this.get(pos + "AxesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3075
                    if(axesCollection && Y.Array.indexOf(axesCollection, axis) > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3076
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3077
                        axis.set("overlapGraph", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3078
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3079
                    axes[i] = axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3080
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3081
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3082
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3083
        return axes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3084
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3085
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3086
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3087
     * Adds axes to the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3088
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3089
     * @method _addAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3090
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3091
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3092
    _addAxes: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3093
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3094
        var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3095
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3096
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3097
            pos,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3098
            w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3099
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3100
            node = Y.Node.one(this._parentNode);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3101
        if(!this._axesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3102
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3103
            this._axesCollection = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3104
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3105
        for(i in axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3106
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3107
            if(axes.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3108
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3109
                axis = axes[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3110
                if(axis instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3111
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3112
                    if(!w)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3113
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3114
                        this.set("width", node.get("offsetWidth"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3115
                        w = this.get("width");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3116
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3117
                    if(!h)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3118
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3119
                        this.set("height", node.get("offsetHeight"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3120
                        h = this.get("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3121
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3122
                    this._addToAxesRenderQueue(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3123
                    pos = axis.get("position");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3124
                    if(!this.get(pos + "AxesCollection"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3125
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3126
                        this.set(pos + "AxesCollection", [axis]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3127
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3128
                    else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3129
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3130
                        this.get(pos + "AxesCollection").push(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3131
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3132
                    this._axesCollection.push(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3133
                    if(axis.get("keys").hasOwnProperty(this.get("categoryKey")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3134
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3135
                        this.set("categoryAxis", axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3136
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3137
                    axis.render(this.get("contentBox"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3138
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3139
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3140
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3141
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3142
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3143
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3144
     * Renders the Graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3145
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3146
     * @method _addSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3147
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3148
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3149
    _addSeries: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3150
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3151
        var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3152
        graph.render(this.get("contentBox"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3153
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3154
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3155
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3156
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3157
     * Adds gridlines to the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3158
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3159
     * @method _addGridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3160
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3161
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3162
    _addGridlines: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3163
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3164
        var graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3165
            hgl = this.get("horizontalGridlines"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3166
            vgl = this.get("verticalGridlines"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3167
            direction = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3168
            leftAxesCollection = this.get("leftAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3169
            rightAxesCollection = this.get("rightAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3170
            bottomAxesCollection = this.get("bottomAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3171
            topAxesCollection = this.get("topAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3172
            seriesAxesCollection,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3173
            catAxis = this.get("categoryAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3174
            hAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3175
            vAxis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3176
        if(this._axesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3177
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3178
            seriesAxesCollection = this._axesCollection.concat();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3179
            seriesAxesCollection.splice(Y.Array.indexOf(seriesAxesCollection, catAxis), 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3180
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3181
        if(hgl)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3182
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3183
            if(leftAxesCollection && leftAxesCollection[0])
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3184
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3185
                hAxis = leftAxesCollection[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3186
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3187
            else if(rightAxesCollection && rightAxesCollection[0])
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3188
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3189
                hAxis = rightAxesCollection[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3190
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3191
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3192
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3193
                hAxis = direction === "horizontal" ? catAxis : seriesAxesCollection[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3194
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3195
            if(!this._getBaseAttribute(hgl, "axis") && hAxis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3196
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3197
                this._setBaseAttribute(hgl, "axis", hAxis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3198
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3199
            if(this._getBaseAttribute(hgl, "axis"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3200
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3201
                graph.set("horizontalGridlines", hgl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3202
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3203
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3204
        if(vgl)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3205
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3206
            if(bottomAxesCollection && bottomAxesCollection[0])
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3207
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3208
                vAxis = bottomAxesCollection[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3209
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3210
            else if (topAxesCollection && topAxesCollection[0])
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3211
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3212
                vAxis = topAxesCollection[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3213
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3214
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3215
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3216
                vAxis = direction === "vertical" ? catAxis : seriesAxesCollection[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3217
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3218
            if(!this._getBaseAttribute(vgl, "axis") && vAxis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3219
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3220
                this._setBaseAttribute(vgl, "axis", vAxis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3221
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3222
            if(this._getBaseAttribute(vgl, "axis"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3223
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3224
                graph.set("verticalGridlines", vgl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3225
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3226
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3227
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3228
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3229
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3230
     * Default Function for the axes attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3231
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3232
     * @method _getDefaultAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3233
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3234
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3235
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3236
    _getDefaultAxes: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3237
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3238
        var axes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3239
        if(this.get("dataProvider"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3240
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3241
            axes = this._parseAxes();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3242
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3243
        return axes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3244
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3245
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3246
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3247
     * Generates and returns a key-indexed object containing `Axis` instances or objects used to create `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3248
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3249
     * @method _parseAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3250
     * @param {Object} axes Object containing `Axis` instances or `Axis` attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3251
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3252
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3253
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3254
    _parseAxes: function(axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3255
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3256
        var catKey = this.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3257
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3258
            attr,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3259
            keys,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3260
            newAxes = {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3261
            claimedKeys = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3262
            newKeys = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3263
            categoryAxisName = this.get("categoryAxisName") || this.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3264
            valueAxisName = this.get("valueAxisName"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3265
            seriesKeys = this.get("seriesKeys").concat(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3266
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3267
            l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3268
            ii,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3269
            ll,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3270
            cIndex,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3271
            direction = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3272
            seriesPosition,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3273
            categoryPosition,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3274
            valueAxes = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3275
            seriesAxis = this.get("stacked") ? "stacked" : "numeric";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3276
        if(direction === "vertical")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3277
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3278
            seriesPosition = "bottom";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3279
            categoryPosition = "left";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3280
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3281
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3282
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3283
            seriesPosition = "left";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3284
            categoryPosition = "bottom";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3285
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3286
        if(axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3287
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3288
            for(i in axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3289
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3290
                if(axes.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3291
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3292
                    axis = axes[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3293
                    keys = this._getBaseAttribute(axis, "keys");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3294
                    attr = this._getBaseAttribute(axis, "type");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3295
                    if(attr === "time" || attr === "category")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3296
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3297
                        categoryAxisName = i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3298
                        this.set("categoryAxisName", i);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3299
                        if(Y_Lang.isArray(keys) && keys.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3300
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3301
                            catKey = keys[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3302
                            this.set("categoryKey", catKey);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3303
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3304
                        newAxes[i] = axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3305
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3306
                    else if(i === categoryAxisName)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3307
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3308
                        newAxes[i] = axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3309
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3310
                    else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3311
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3312
                        newAxes[i] = axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3313
                        if(i !== valueAxisName && keys && Y_Lang.isArray(keys))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3314
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3315
                            ll = keys.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3316
                            for(ii = 0; ii < ll; ++ii)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3317
                            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3318
                                claimedKeys.push(keys[ii]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3319
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3320
                            valueAxes.push(newAxes[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3321
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3322
                        if(!(this._getBaseAttribute(newAxes[i], "type")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3323
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3324
                            this._setBaseAttribute(newAxes[i], "type", seriesAxis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3325
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3326
                        if(!(this._getBaseAttribute(newAxes[i], "position")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3327
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3328
                            this._setBaseAttribute(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3329
                                newAxes[i],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3330
                                "position",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3331
                                this._getDefaultAxisPosition(newAxes[i], valueAxes, seriesPosition)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3332
                            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3333
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3334
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3335
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3336
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3337
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3338
        cIndex = Y.Array.indexOf(seriesKeys, catKey);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3339
        if(cIndex > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3340
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3341
            seriesKeys.splice(cIndex, 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3342
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3343
        l = seriesKeys.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3344
        for(i = 0; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3345
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3346
            cIndex = Y.Array.indexOf(claimedKeys, seriesKeys[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3347
            if(cIndex > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3348
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3349
                newKeys = newKeys.concat(claimedKeys.splice(cIndex, 1));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3350
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3351
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3352
        claimedKeys = newKeys.concat(claimedKeys);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3353
        l = claimedKeys.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3354
        for(i = 0; i < l; i = i + 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3355
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3356
            cIndex = Y.Array.indexOf(seriesKeys, claimedKeys[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3357
            if(cIndex > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3358
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3359
                seriesKeys.splice(cIndex, 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3360
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3361
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3362
        if(!newAxes.hasOwnProperty(categoryAxisName))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3363
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3364
            newAxes[categoryAxisName] = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3365
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3366
        if(!(this._getBaseAttribute(newAxes[categoryAxisName], "keys")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3367
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3368
            this._setBaseAttribute(newAxes[categoryAxisName], "keys", [catKey]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3369
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3370
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3371
        if(!(this._getBaseAttribute(newAxes[categoryAxisName], "position")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3372
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3373
            this._setBaseAttribute(newAxes[categoryAxisName], "position", categoryPosition);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3374
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3375
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3376
        if(!(this._getBaseAttribute(newAxes[categoryAxisName], "type")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3377
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3378
            this._setBaseAttribute(newAxes[categoryAxisName], "type", this.get("categoryType"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3379
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3380
        if(!newAxes.hasOwnProperty(valueAxisName) && seriesKeys && seriesKeys.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3381
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3382
            newAxes[valueAxisName] = {keys:seriesKeys};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3383
            valueAxes.push(newAxes[valueAxisName]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3384
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3385
        if(claimedKeys.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3386
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3387
            if(seriesKeys.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3388
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3389
                seriesKeys = claimedKeys.concat(seriesKeys);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3390
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3391
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3392
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3393
                seriesKeys = claimedKeys;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3394
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3395
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3396
        if(newAxes.hasOwnProperty(valueAxisName))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3397
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3398
            if(!(this._getBaseAttribute(newAxes[valueAxisName], "position")))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3399
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3400
                this._setBaseAttribute(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3401
                    newAxes[valueAxisName],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3402
                    "position",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3403
                    this._getDefaultAxisPosition(newAxes[valueAxisName], valueAxes, seriesPosition)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3404
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3405
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3406
            this._setBaseAttribute(newAxes[valueAxisName], "type", seriesAxis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3407
            this._setBaseAttribute(newAxes[valueAxisName], "keys", seriesKeys);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3408
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3409
        if(!this._wereSeriesKeysExplicitlySet())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3410
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3411
            this.set("seriesKeys", seriesKeys, {src: "internal"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3412
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3413
        return newAxes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3414
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3415
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3416
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3417
     * Determines the position of an axis when one is not specified.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3418
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3419
     * @method _getDefaultAxisPosition
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3420
     * @param {Axis} axis `Axis` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3421
     * @param {Array} valueAxes Array of `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3422
     * @param {String} position Default position depending on the direction of the chart and type of axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3423
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3424
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3425
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3426
    _getDefaultAxisPosition: function(axis, valueAxes, position)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3427
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3428
        var direction = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3429
            i = Y.Array.indexOf(valueAxes, axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3430
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3431
        if(valueAxes[i - 1] && valueAxes[i - 1].position)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3432
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3433
            if(direction === "horizontal")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3434
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3435
                if(valueAxes[i - 1].position === "left")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3436
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3437
                    position = "right";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3438
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3439
                else if(valueAxes[i - 1].position === "right")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3440
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3441
                    position = "left";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3442
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3443
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3444
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3445
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3446
                if (valueAxes[i -1].position === "bottom")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3447
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3448
                    position = "top";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3449
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3450
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3451
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3452
                    position = "bottom";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3453
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3454
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3455
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3456
        return position;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3457
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3458
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3459
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3460
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3461
     * Returns an object literal containing a categoryItem and a valueItem for a given series index. Below is the structure of each:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3462
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3463
     * @method getSeriesItems
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3464
     * @param {CartesianSeries} series Reference to a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3465
     * @param {Number} index Index of the specified item within a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3466
     * @return Object An object literal containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3467
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3468
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3469
     *      <dt>categoryItem</dt><dd>Object containing the following data related to the category axis of the series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3470
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3471
     *      <dt>axis</dt><dd>Reference to the category axis of the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3472
     *      <dt>key</dt><dd>Category key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3473
     *      <dt>value</dt><dd>Value on the axis corresponding to the series index.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3474
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3475
     *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3476
     *      <dt>valueItem</dt><dd>Object containing the following data related to the category axis of the series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3477
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3478
     *      <dt>axis</dt><dd>Reference to the value axis of the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3479
     *      <dt>key</dt><dd>Value key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3480
     *      <dt>value</dt><dd>Value on the axis corresponding to the series index.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3481
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3482
     *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3483
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3484
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3485
    getSeriesItems: function(series, index)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3486
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3487
        var xAxis = series.get("xAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3488
            yAxis = series.get("yAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3489
            xKey = series.get("xKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3490
            yKey = series.get("yKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3491
            categoryItem,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3492
            valueItem;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3493
        if(this.get("direction") === "vertical")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3494
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3495
            categoryItem = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3496
                axis:yAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3497
                key:yKey,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3498
                value:yAxis.getKeyValueAt(yKey, index)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3499
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3500
            valueItem = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3501
                axis:xAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3502
                key:xKey,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3503
                value: xAxis.getKeyValueAt(xKey, index)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3504
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3505
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3506
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3507
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3508
            valueItem = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3509
                axis:yAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3510
                key:yKey,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3511
                value:yAxis.getKeyValueAt(yKey, index)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3512
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3513
            categoryItem = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3514
                axis:xAxis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3515
                key:xKey,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3516
                value: xAxis.getKeyValueAt(xKey, index)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3517
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3518
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3519
        categoryItem.displayName = series.get("categoryDisplayName");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3520
        valueItem.displayName = series.get("valueDisplayName");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3521
        categoryItem.value = categoryItem.axis.getKeyValueAt(categoryItem.key, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3522
        valueItem.value = valueItem.axis.getKeyValueAt(valueItem.key, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3523
        return {category:categoryItem, value:valueItem};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3524
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3525
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3526
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3527
     * Handler for sizeChanged event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3528
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3529
     * @method _sizeChanged
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3530
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3531
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3532
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3533
    _sizeChanged: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3534
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3535
        if(this._axesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3536
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3537
            var ac = this._axesCollection,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3538
                i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3539
                l = ac.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3540
            for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3541
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3542
                this._addToAxesRenderQueue(ac[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3543
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3544
            this._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3545
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3546
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3547
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3548
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3549
     * Returns the maximum distance in pixels that the extends outside the top bounds of all vertical axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3550
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3551
     * @method _getTopOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3552
     * @param {Array} set1 Collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3553
     * @param {Array} set2 Seconf collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3554
     * @param {Number} width Width of the axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3555
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3556
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3557
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3558
    _getTopOverflow: function(set1, set2, height)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3559
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3560
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3561
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3562
            overflow = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3563
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3564
        if(set1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3565
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3566
            len = set1.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3567
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3568
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3569
                axis = set1[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3570
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3571
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3572
                    Math.abs(axis.getMaxLabelBounds().top) - axis.getEdgeOffset(axis.get("styles").majorTicks.count, height)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3573
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3574
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3575
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3576
        if(set2)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3577
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3578
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3579
            len = set2.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3580
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3581
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3582
                axis = set2[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3583
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3584
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3585
                    Math.abs(axis.getMaxLabelBounds().top) - axis.getEdgeOffset(axis.get("styles").majorTicks.count, height)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3586
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3587
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3588
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3589
        return overflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3590
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3591
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3592
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3593
     * Returns the maximum distance in pixels that the extends outside the right bounds of all horizontal axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3594
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3595
     * @method _getRightOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3596
     * @param {Array} set1 Collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3597
     * @param {Array} set2 Seconf collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3598
     * @param {Number} width Width of the axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3599
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3600
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3601
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3602
    _getRightOverflow: function(set1, set2, width)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3603
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3604
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3605
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3606
            overflow = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3607
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3608
        if(set1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3609
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3610
            len = set1.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3611
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3612
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3613
                axis = set1[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3614
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3615
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3616
                    axis.getMaxLabelBounds().right - axis.getEdgeOffset(axis.get("styles").majorTicks.count, width)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3617
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3618
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3619
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3620
        if(set2)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3621
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3622
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3623
            len = set2.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3624
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3625
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3626
                axis = set2[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3627
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3628
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3629
                    axis.getMaxLabelBounds().right - axis.getEdgeOffset(axis.get("styles").majorTicks.count, width)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3630
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3631
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3632
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3633
        return overflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3634
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3635
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3636
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3637
     * Returns the maximum distance in pixels that the extends outside the left bounds of all horizontal axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3638
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3639
     * @method _getLeftOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3640
     * @param {Array} set1 Collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3641
     * @param {Array} set2 Seconf collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3642
     * @param {Number} width Width of the axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3643
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3644
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3645
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3646
    _getLeftOverflow: function(set1, set2, width)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3647
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3648
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3649
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3650
            overflow = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3651
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3652
        if(set1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3653
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3654
            len = set1.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3655
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3656
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3657
                axis = set1[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3658
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3659
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3660
                    Math.abs(axis.getMinLabelBounds().left) - axis.getEdgeOffset(axis.get("styles").majorTicks.count, width)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3661
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3662
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3663
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3664
        if(set2)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3665
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3666
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3667
            len = set2.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3668
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3669
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3670
                axis = set2[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3671
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3672
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3673
                    Math.abs(axis.getMinLabelBounds().left) - axis.getEdgeOffset(axis.get("styles").majorTicks.count, width)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3674
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3675
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3676
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3677
        return overflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3678
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3679
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3680
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3681
     * Returns the maximum distance in pixels that the extends outside the bottom bounds of all vertical axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3682
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3683
     * @method _getBottomOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3684
     * @param {Array} set1 Collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3685
     * @param {Array} set2 Seconf collection of axes to check.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3686
     * @param {Number} height Height of the axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3687
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3688
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3689
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3690
    _getBottomOverflow: function(set1, set2, height)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3691
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3692
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3693
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3694
            overflow = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3695
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3696
        if(set1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3697
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3698
            len = set1.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3699
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3700
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3701
                axis = set1[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3702
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3703
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3704
                    axis.getMinLabelBounds().bottom - axis.getEdgeOffset(axis.get("styles").majorTicks.count, height)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3705
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3706
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3707
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3708
        if(set2)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3709
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3710
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3711
            len = set2.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3712
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3713
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3714
                axis = set2[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3715
                overflow = Math.max(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3716
                    overflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3717
                    axis.getMinLabelBounds().bottom - axis.getEdgeOffset(axis.get("styles").majorTicks.count, height)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3718
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3719
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3720
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3721
        return overflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3722
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3723
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3724
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3725
     * Redraws and position all the components of the chart instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3726
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3727
     * @method _redraw
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3728
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3729
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3730
    _redraw: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3731
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3732
        if(this._drawing)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3733
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3734
            this._callLater = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3735
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3736
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3737
        this._drawing = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3738
        this._callLater = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3739
        var w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3740
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3741
            leftPaneWidth = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3742
            rightPaneWidth = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3743
            topPaneHeight = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3744
            bottomPaneHeight = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3745
            leftAxesCollection = this.get("leftAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3746
            rightAxesCollection = this.get("rightAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3747
            topAxesCollection = this.get("topAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3748
            bottomAxesCollection = this.get("bottomAxesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3749
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3750
            l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3751
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3752
            graphOverflow = "visible",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3753
            graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3754
            topOverflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3755
            bottomOverflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3756
            leftOverflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3757
            rightOverflow,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3758
            graphWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3759
            graphHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3760
            graphX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3761
            graphY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3762
            allowContentOverflow = this.get("allowContentOverflow"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3763
            diff,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3764
            rightAxesXCoords,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3765
            leftAxesXCoords,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3766
            topAxesYCoords,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3767
            bottomAxesYCoords,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3768
            graphRect = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3769
        if(leftAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3770
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3771
            leftAxesXCoords = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3772
            l = leftAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3773
            for(i = l - 1; i > -1; --i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3774
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3775
                leftAxesXCoords.unshift(leftPaneWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3776
                leftPaneWidth += leftAxesCollection[i].get("width");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3777
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3778
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3779
        if(rightAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3780
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3781
            rightAxesXCoords = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3782
            l = rightAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3783
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3784
            for(i = l - 1; i > -1; --i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3785
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3786
                rightPaneWidth += rightAxesCollection[i].get("width");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3787
                rightAxesXCoords.unshift(w - rightPaneWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3788
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3789
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3790
        if(topAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3791
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3792
            topAxesYCoords = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3793
            l = topAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3794
            for(i = l - 1; i > -1; --i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3795
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3796
                topAxesYCoords.unshift(topPaneHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3797
                topPaneHeight += topAxesCollection[i].get("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3798
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3799
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3800
        if(bottomAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3801
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3802
            bottomAxesYCoords = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3803
            l = bottomAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3804
            for(i = l - 1; i > -1; --i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3805
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3806
                bottomPaneHeight += bottomAxesCollection[i].get("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3807
                bottomAxesYCoords.unshift(h - bottomPaneHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3808
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3809
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3810
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3811
        graphWidth = w - (leftPaneWidth + rightPaneWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3812
        graphHeight = h - (bottomPaneHeight + topPaneHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3813
        graphRect.left = leftPaneWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3814
        graphRect.top = topPaneHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3815
        graphRect.bottom = h - bottomPaneHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3816
        graphRect.right = w - rightPaneWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3817
        if(!allowContentOverflow)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3818
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3819
            topOverflow = this._getTopOverflow(leftAxesCollection, rightAxesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3820
            bottomOverflow = this._getBottomOverflow(leftAxesCollection, rightAxesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3821
            leftOverflow = this._getLeftOverflow(bottomAxesCollection, topAxesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3822
            rightOverflow = this._getRightOverflow(bottomAxesCollection, topAxesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3823
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3824
            diff = topOverflow - topPaneHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3825
            if(diff > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3826
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3827
                graphRect.top = topOverflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3828
                if(topAxesYCoords)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3829
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3830
                    i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3831
                    l = topAxesYCoords.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3832
                    for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3833
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3834
                        topAxesYCoords[i] += diff;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3835
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3836
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3837
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3838
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3839
            diff = bottomOverflow - bottomPaneHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3840
            if(diff > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3841
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3842
                graphRect.bottom = h - bottomOverflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3843
                if(bottomAxesYCoords)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3844
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3845
                    i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3846
                    l = bottomAxesYCoords.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3847
                    for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3848
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3849
                        bottomAxesYCoords[i] -= diff;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3850
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3851
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3852
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3853
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3854
            diff = leftOverflow - leftPaneWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3855
            if(diff > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3856
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3857
                graphRect.left = leftOverflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3858
                if(leftAxesXCoords)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3859
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3860
                    i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3861
                    l = leftAxesXCoords.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3862
                    for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3863
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3864
                        leftAxesXCoords[i] += diff;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3865
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3866
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3867
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3868
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3869
            diff = rightOverflow - rightPaneWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3870
            if(diff > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3871
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3872
                graphRect.right = w - rightOverflow;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3873
                if(rightAxesXCoords)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3874
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3875
                    i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3876
                    l = rightAxesXCoords.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3877
                    for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3878
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3879
                        rightAxesXCoords[i] -= diff;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3880
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3881
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3882
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3883
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3884
        graphWidth = graphRect.right - graphRect.left;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3885
        graphHeight = graphRect.bottom - graphRect.top;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3886
        graphX = graphRect.left;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3887
        graphY = graphRect.top;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3888
        if(topAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3889
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3890
            l = topAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3891
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3892
            for(; i < l; i++)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3893
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3894
                axis = topAxesCollection[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3895
                if(axis.get("width") !== graphWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3896
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3897
                    axis.set("width", graphWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3898
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3899
                axis.get("boundingBox").setStyle("left", graphX + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3900
                axis.get("boundingBox").setStyle("top", topAxesYCoords[i] + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3901
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3902
            if(axis._hasDataOverflow())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3903
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3904
                graphOverflow = "hidden";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3905
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3906
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3907
        if(bottomAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3908
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3909
            l = bottomAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3910
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3911
            for(; i < l; i++)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3912
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3913
                axis = bottomAxesCollection[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3914
                if(axis.get("width") !== graphWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3915
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3916
                    axis.set("width", graphWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3917
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3918
                axis.get("boundingBox").setStyle("left", graphX + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3919
                axis.get("boundingBox").setStyle("top", bottomAxesYCoords[i] + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3920
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3921
            if(axis._hasDataOverflow())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3922
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3923
                graphOverflow = "hidden";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3924
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3925
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3926
        if(leftAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3927
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3928
            l = leftAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3929
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3930
            for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3931
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3932
                axis = leftAxesCollection[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3933
                axis.get("boundingBox").setStyle("top", graphY + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3934
                axis.get("boundingBox").setStyle("left", leftAxesXCoords[i] + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3935
                if(axis.get("height") !== graphHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3936
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3937
                    axis.set("height", graphHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3938
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3939
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3940
            if(axis._hasDataOverflow())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3941
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3942
                graphOverflow = "hidden";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3943
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3944
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3945
        if(rightAxesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3946
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3947
            l = rightAxesCollection.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3948
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3949
            for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3950
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3951
                axis = rightAxesCollection[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3952
                axis.get("boundingBox").setStyle("top", graphY + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3953
                axis.get("boundingBox").setStyle("left", rightAxesXCoords[i] + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3954
                if(axis.get("height") !== graphHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3955
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3956
                    axis.set("height", graphHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3957
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3958
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3959
            if(axis._hasDataOverflow())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3960
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3961
                graphOverflow = "hidden";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3962
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3963
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3964
        this._drawing = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3965
        if(this._callLater)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3966
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3967
            this._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3968
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3969
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3970
        if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3971
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3972
            graph.get("boundingBox").setStyle("left", graphX + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3973
            graph.get("boundingBox").setStyle("top", graphY + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3974
            graph.set("width", graphWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3975
            graph.set("height", graphHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3976
            graph.get("boundingBox").setStyle("overflow", graphOverflow);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3977
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3978
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3979
        if(this._overlay)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3980
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3981
            this._overlay.setStyle("left", graphX + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3982
            this._overlay.setStyle("top", graphY + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3983
            this._overlay.setStyle("width", graphWidth + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3984
            this._overlay.setStyle("height", graphHeight + "px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3985
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3986
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3987
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3988
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3989
     * Destructor implementation for the CartesianChart class. Calls destroy on all axes, series and the Graph instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3990
     * Removes the tooltip and overlay HTML elements.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3991
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3992
     * @method destructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3993
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3994
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3995
    destructor: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3996
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3997
        var graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3998
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3999
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4000
            seriesCollection = this.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4001
            axesCollection = this._axesCollection,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4002
            tooltip = this.get("tooltip").node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4003
        if(this._description)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4004
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4005
            this._description.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4006
            this._description.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4007
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4008
        if(this._liveRegion)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4009
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4010
            this._liveRegion.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4011
            this._liveRegion.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4012
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4013
        len = seriesCollection ? seriesCollection.length : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4014
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4015
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4016
            if(seriesCollection[i] instanceof Y.CartesianSeries)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4017
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4018
                seriesCollection[i].destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4019
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4020
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4021
        len = axesCollection ? axesCollection.length : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4022
        for(i = 0; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4023
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4024
            if(axesCollection[i] instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4025
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4026
                axesCollection[i].destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4027
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4028
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4029
        if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4030
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4031
            graph.destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4032
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4033
        if(tooltip)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4034
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4035
            tooltip.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4036
            tooltip.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4037
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4038
        if(this._overlay)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4039
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4040
            this._overlay.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4041
            this._overlay.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4042
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4043
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4044
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4045
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4046
     * Returns the appropriate message based on the key press.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4047
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4048
     * @method _getAriaMessage
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4049
     * @param {Number} key The keycode that was pressed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4050
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4051
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4052
    _getAriaMessage: function(key)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4053
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4054
        var msg = "",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4055
            series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4056
            items,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4057
            categoryItem,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4058
            valueItem,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4059
            seriesIndex = this._seriesIndex,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4060
            itemIndex = this._itemIndex,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4061
            seriesCollection = this.get("seriesCollection"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4062
            len = seriesCollection.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4063
            dataLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4064
        if(key % 2 === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4065
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4066
            if(len > 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4067
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4068
                if(key === 38)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4069
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4070
                    seriesIndex = seriesIndex < 1 ? len - 1 : seriesIndex - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4071
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4072
                else if(key === 40)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4073
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4074
                    seriesIndex = seriesIndex >= len - 1 ? 0 : seriesIndex + 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4075
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4076
                this._itemIndex = -1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4077
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4078
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4079
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4080
                seriesIndex = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4081
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4082
            this._seriesIndex = seriesIndex;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4083
            series = this.getSeries(parseInt(seriesIndex, 10));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4084
            msg = series.get("valueDisplayName") + " series.";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4085
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4086
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4087
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4088
            if(seriesIndex > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4089
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4090
                msg = "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4091
                series = this.getSeries(parseInt(seriesIndex, 10));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4092
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4093
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4094
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4095
                seriesIndex = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4096
                this._seriesIndex = seriesIndex;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4097
                series = this.getSeries(parseInt(seriesIndex, 10));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4098
                msg = series.get("valueDisplayName") + " series.";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4099
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4100
            dataLength = series._dataLength ? series._dataLength : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4101
            if(key === 37)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4102
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4103
                itemIndex = itemIndex > 0 ? itemIndex - 1 : dataLength - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4104
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4105
            else if(key === 39)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4106
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4107
                itemIndex = itemIndex >= dataLength - 1 ? 0 : itemIndex + 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4108
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4109
            this._itemIndex = itemIndex;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4110
            items = this.getSeriesItems(series, itemIndex);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4111
            categoryItem = items.category;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4112
            valueItem = items.value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4113
            if(categoryItem && valueItem && categoryItem.value && valueItem.value)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4114
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4115
                msg += categoryItem.displayName +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4116
                    ": " +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4117
                    categoryItem.axis.formatLabel.apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]) +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4118
                    ", ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4119
                msg += valueItem.displayName +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4120
                    ": " +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4121
                    valueItem.axis.formatLabel.apply(this, [valueItem.value, valueItem.axis.get("labelFormat")]) +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4122
                    ", ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4123
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4124
           else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4125
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4126
                msg += "No data available.";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4127
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4128
            msg += (itemIndex + 1) + " of " + dataLength + ". ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4129
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4130
        return msg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4131
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4132
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4133
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4134
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4135
         * Indicates whether axis labels are allowed to overflow beyond the bounds of the chart's content box.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4136
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4137
         * @attribute allowContentOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4138
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4139
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4140
        allowContentOverflow: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4141
            value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4142
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4144
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4145
         * Style object for the axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4146
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4147
         * @attribute axesStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4148
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4149
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4150
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4151
        axesStyles: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4152
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4153
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4154
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4155
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4156
                var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4157
                    i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4158
                    styles = this._axesStyles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4159
                if(axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4160
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4161
                    for(i in axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4162
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4163
                        if(axes.hasOwnProperty(i) && axes[i] instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4164
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4165
                            if(!styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4166
                            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4167
                                styles = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4168
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4169
                            styles[i] = axes[i].get("styles");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4170
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4171
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4172
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4173
                return styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4174
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4175
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4176
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4177
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4178
                var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4179
                    i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4180
                for(i in val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4181
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4182
                    if(val.hasOwnProperty(i) && axes.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4183
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4184
                        this._setBaseAttribute(axes[i], "styles", val[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4185
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4186
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4187
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4188
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4189
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4190
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4191
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4192
         * Style object for the series
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4193
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4194
         * @attribute seriesStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4195
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4196
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4197
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4198
        seriesStyles: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4199
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4200
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4201
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4202
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4203
                var styles = this._seriesStyles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4204
                    graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4205
                    dict,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4206
                    i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4207
                if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4208
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4209
                    dict = graph.get("seriesDictionary");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4210
                    if(dict)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4211
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4212
                        styles = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4213
                        for(i in dict)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4214
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4215
                            if(dict.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4216
                            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4217
                                styles[i] = dict[i].get("styles");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4218
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4219
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4220
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4221
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4222
                return styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4223
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4224
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4225
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4226
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4227
                var i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4228
                    l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4229
                    s;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4230
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4231
                if(Y_Lang.isArray(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4232
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4233
                    s = this.get("seriesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4234
                    i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4235
                    l = val.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4236
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4237
                    for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4238
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4239
                        this._setBaseAttribute(s[i], "styles", val[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4240
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4241
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4242
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4243
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4244
                    for(i in val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4245
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4246
                        if(val.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4247
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4248
                            s = this.getSeries(i);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4249
                            this._setBaseAttribute(s, "styles", val[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4250
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4251
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4252
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4253
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4254
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4255
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4256
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4257
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4258
         * Styles for the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4259
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4260
         * @attribute graphStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4261
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4262
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4263
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4264
        graphStyles: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4265
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4266
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4267
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4268
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4269
                var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4270
                if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4271
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4272
                    return(graph.get("styles"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4273
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4274
                return this._graphStyles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4275
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4276
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4277
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4278
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4279
                var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4280
                this._setBaseAttribute(graph, "styles", val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4281
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4282
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4283
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4284
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4285
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4286
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4287
         * Style properties for the chart. Contains a key indexed hash of the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4288
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4289
         *      <dt>series</dt><dd>A key indexed hash containing references to the `styles` attribute for each series in the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4290
         *      Specific style attributes vary depending on the series:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4291
         *      <ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4292
         *          <li><a href="AreaSeries.html#attr_styles">AreaSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4293
         *          <li><a href="BarSeries.html#attr_styles">BarSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4294
         *          <li><a href="ColumnSeries.html#attr_styles">ColumnSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4295
         *          <li><a href="ComboSeries.html#attr_styles">ComboSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4296
         *          <li><a href="LineSeries.html#attr_styles">LineSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4297
         *          <li><a href="MarkerSeries.html#attr_styles">MarkerSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4298
         *          <li><a href="SplineSeries.html#attr_styles">SplineSeries</a></li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4299
         *      </ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4300
         *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4301
         *      <dt>axes</dt><dd>A key indexed hash containing references to the `styles` attribute for each axes in the chart. Specific
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4302
         *      style attributes can be found in the <a href="Axis.html#attr_styles">Axis</a> class.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4303
         *      <dt>graph</dt><dd>A reference to the `styles` attribute in the chart. Specific style attributes can be found in the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4304
         *      <a href="Graph.html#attr_styles">Graph</a> class.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4305
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4306
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4307
         * @attribute styles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4308
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4309
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4310
        styles: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4311
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4312
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4313
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4314
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4315
                var styles = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4316
                    axes: this.get("axesStyles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4317
                    series: this.get("seriesStyles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4318
                    graph: this.get("graphStyles")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4319
                };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4320
                return styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4321
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4322
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4323
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4324
                if(val.hasOwnProperty("axes"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4325
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4326
                    if(this.get("axesStyles"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4327
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4328
                        this.set("axesStyles", val.axes);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4329
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4330
                    else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4331
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4332
                        this._axesStyles = val.axes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4333
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4334
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4335
                if(val.hasOwnProperty("series"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4336
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4337
                    if(this.get("seriesStyles"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4338
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4339
                        this.set("seriesStyles", val.series);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4340
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4341
                    else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4342
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4343
                        this._seriesStyles = val.series;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4344
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4345
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4346
                if(val.hasOwnProperty("graph"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4347
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4348
                    this.set("graphStyles", val.graph);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4349
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4350
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4351
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4352
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4353
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4354
         * Axes to appear in the chart. This can be a key indexed hash of axis instances or object literals
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4355
         * used to construct the appropriate axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4356
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4357
         * @attribute axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4358
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4359
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4360
        axes: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4361
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4362
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4363
            valueFn: "_getDefaultAxes",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4364
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4365
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4366
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4367
                if(this.get("dataProvider"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4368
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4369
                    val = this._setAxes(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4370
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4371
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4372
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4373
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4374
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4375
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4376
         * Collection of series to appear on the chart. This can be an array of Series instances or object literals
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4377
         * used to construct the appropriate series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4378
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4379
         * @attribute seriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4380
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4381
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4382
        seriesCollection: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4383
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4384
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4385
            valueFn: "_getDefaultSeriesCollection",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4386
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4387
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4388
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4389
                if(this.get("dataProvider"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4390
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4391
                    return this._parseSeriesCollection(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4392
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4393
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4394
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4395
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4396
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4397
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4398
         * Reference to the left-aligned axes for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4399
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4400
         * @attribute leftAxesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4401
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4402
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4403
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4404
        leftAxesCollection: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4405
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4406
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4407
         * Reference to the bottom-aligned axes for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4408
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4409
         * @attribute bottomAxesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4410
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4411
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4412
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4413
        bottomAxesCollection: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4414
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4415
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4416
         * Reference to the right-aligned axes for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4417
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4418
         * @attribute rightAxesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4419
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4420
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4421
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4422
        rightAxesCollection: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4423
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4424
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4425
         * Reference to the top-aligned axes for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4426
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4427
         * @attribute topAxesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4428
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4429
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4430
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4431
        topAxesCollection: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4432
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4433
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4434
         * Indicates whether or not the chart is stacked.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4435
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4436
         * @attribute stacked
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4437
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4438
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4439
        stacked: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4440
            value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4441
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4442
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4443
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4444
         * Direction of chart's category axis when there is no series collection specified. Charts can
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4445
         * be horizontal or vertical. When the chart type is column, the chart is horizontal.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4446
         * When the chart type is bar, the chart is vertical.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4447
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4448
         * @attribute direction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4449
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4450
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4451
        direction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4452
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4453
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4454
                var type = this.get("type");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4455
                if(type === "bar")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4456
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4457
                    return "vertical";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4458
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4459
                else if(type === "column")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4460
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4461
                    return "horizontal";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4462
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4463
                return this._direction;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4464
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4465
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4466
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4467
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4468
                this._direction = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4469
                return this._direction;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4470
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4471
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4472
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4473
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4474
         * Indicates whether or not an area is filled in a combo chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4475
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4476
         * @attribute showAreaFill
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4477
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4478
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4479
        showAreaFill: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4480
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4481
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4482
         * Indicates whether to display markers in a combo chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4483
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4484
         * @attribute showMarkers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4485
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4486
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4487
        showMarkers:{},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4488
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4489
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4490
         * Indicates whether to display lines in a combo chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4491
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4492
         * @attribute showLines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4493
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4494
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4495
        showLines:{},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4496
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4497
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4498
         * Indicates the key value used to identify a category axis in the `axes` hash. If
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4499
         * not specified, the categoryKey attribute value will be used.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4500
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4501
         * @attribute categoryAxisName
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4502
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4503
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4504
        categoryAxisName: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4505
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4506
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4507
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4508
         * Indicates the key value used to identify a the series axis when an axis not generated.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4509
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4510
         * @attribute valueAxisName
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4511
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4512
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4513
        valueAxisName: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4514
            value: "values"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4515
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4516
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4517
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4518
         * Reference to the horizontalGridlines for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4519
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4520
         * @attribute horizontalGridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4521
         * @type Gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4522
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4523
        horizontalGridlines: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4524
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4525
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4526
                var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4527
                if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4528
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4529
                    return graph.get("horizontalGridlines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4530
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4531
                return this._horizontalGridlines;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4532
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4533
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4534
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4535
                var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4536
                if(val && !Y_Lang.isObject(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4537
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4538
                    val = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4539
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4540
                if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4541
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4542
                    graph.set("horizontalGridlines", val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4543
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4544
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4545
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4546
                    this._horizontalGridlines = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4547
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4548
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4549
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4550
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4551
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4552
         * Reference to the verticalGridlines for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4553
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4554
         * @attribute verticalGridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4555
         * @type Gridlines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4556
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4557
        verticalGridlines: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4558
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4559
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4560
                var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4561
                if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4562
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4563
                    return graph.get("verticalGridlines");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4564
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4565
                return this._verticalGridlines;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4566
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4567
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4568
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4569
                var graph = this.get("graph");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4570
                if(val && !Y_Lang.isObject(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4571
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4572
                    val = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4573
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4574
                if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4575
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4576
                    graph.set("verticalGridlines", val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4577
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4578
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4579
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4580
                    this._verticalGridlines = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4581
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4582
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4583
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4584
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4585
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4586
         * Type of chart when there is no series collection specified.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4587
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4588
         * @attribute type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4589
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4590
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4591
        type: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4592
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4593
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4594
                if(this.get("stacked"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4595
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4596
                    return "stacked" + this._type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4597
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4598
                return this._type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4599
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4600
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4601
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4602
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4603
                if(this._type === "bar")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4604
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4605
                    if(val !== "bar")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4606
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4607
                        this.set("direction", "horizontal");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4608
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4609
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4610
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4611
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4612
                    if(val === "bar")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4613
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4614
                        this.set("direction", "vertical");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4615
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4616
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4617
                this._type = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4618
                return this._type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4619
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4620
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4621
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4622
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4623
         * Reference to the category axis used by the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4624
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4625
         * @attribute categoryAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4626
         * @type Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4627
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4628
        categoryAxis:{}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4629
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4630
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4631
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4632
 * The PieChart class creates a pie chart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4633
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4634
 * @class PieChart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4635
 * @extends ChartBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4636
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4637
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4638
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4639
Y.PieChart = Y.Base.create("pieChart", Y.Widget, [Y.ChartBase], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4640
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4641
     * Calculates and returns a `seriesCollection`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4642
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4643
     * @method _getSeriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4644
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4645
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4646
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4647
    _getSeriesCollection: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4648
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4649
        if(this._seriesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4650
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4651
            return this._seriesCollection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4652
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4653
        var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4654
            sc = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4655
            seriesKeys,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4656
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4657
            l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4658
            type = this.get("type"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4659
            key,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4660
            catAxis = "categoryAxis",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4661
            catKey = "categoryKey",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4662
            valAxis = "valueAxis",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4663
            seriesKey = "valueKey";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4664
        if(axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4665
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4666
            seriesKeys = axes.values.get("keyCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4667
            key = axes.category.get("keyCollection")[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4668
            l = seriesKeys.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4669
            for(; i < l; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4670
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4671
                sc[i] = {type:type};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4672
                sc[i][catAxis] = "category";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4673
                sc[i][valAxis] = "values";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4674
                sc[i][catKey] = key;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4675
                sc[i][seriesKey] = seriesKeys[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4676
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4677
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4678
        this._seriesCollection = sc;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4679
        return sc;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4680
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4681
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4682
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4683
     * Creates `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4684
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4685
     * @method _parseAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4686
     * @param {Object} val Object containing `Axis` instances or objects in which to construct `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4687
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4688
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4689
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4690
    _parseAxes: function(hash)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4691
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4692
        if(!this._axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4693
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4694
            this._axes = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4695
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4696
        var i, pos, axis, dh, config, AxisClass,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4697
            type = this.get("type"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4698
            w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4699
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4700
            node = Y.Node.one(this._parentNode);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4701
        if(!w)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4702
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4703
            this.set("width", node.get("offsetWidth"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4704
            w = this.get("width");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4705
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4706
        if(!h)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4707
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4708
            this.set("height", node.get("offsetHeight"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4709
            h = this.get("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4710
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4711
        for(i in hash)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4712
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4713
            if(hash.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4714
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4715
                dh = hash[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4716
                pos = type === "pie" ? "none" : dh.position;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4717
                AxisClass = this._getAxisClass(dh.type);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4718
                config = {dataProvider:this.get("dataProvider")};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4719
                if(dh.hasOwnProperty("roundingUnit"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4720
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4721
                    config.roundingUnit = dh.roundingUnit;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4722
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4723
                config.keys = dh.keys;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4724
                config.width = w;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4725
                config.height = h;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4726
                config.position = pos;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4727
                config.styles = dh.styles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4728
                axis = new AxisClass(config);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4729
                axis.on("axisRendered", Y.bind(this._itemRendered, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4730
                this._axes[i] = axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4731
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4732
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4733
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4734
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4735
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4736
     * Adds axes to the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4737
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4738
     * @method _addAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4739
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4740
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4741
    _addAxes: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4742
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4743
        var axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4744
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4745
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4746
            p;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4747
        if(!axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4748
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4749
            this.set("axes", this._getDefaultAxes());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4750
            axes = this.get("axes");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4751
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4752
        if(!this._axesCollection)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4753
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4754
            this._axesCollection = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4755
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4756
        for(i in axes)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4757
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4758
            if(axes.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4759
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4760
                axis = axes[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4761
                p = axis.get("position");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4762
                if(!this.get(p + "AxesCollection"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4763
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4764
                    this.set(p + "AxesCollection", [axis]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4765
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4766
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4767
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4768
                    this.get(p + "AxesCollection").push(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4769
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4770
                this._axesCollection.push(axis);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4771
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4772
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4773
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4774
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4775
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4776
     * Renders the Graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4777
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4778
     * @method _addSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4779
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4780
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4781
    _addSeries: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4782
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4783
        var graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4784
            seriesCollection = this.get("seriesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4785
        this._parseSeriesAxes(seriesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4786
        graph.set("showBackground", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4787
        graph.set("width", this.get("width"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4788
        graph.set("height", this.get("height"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4789
        graph.set("seriesCollection", seriesCollection);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4790
        this._seriesCollection = graph.get("seriesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4791
        graph.render(this.get("contentBox"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4792
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4793
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4794
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4795
     * Parse and sets the axes for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4796
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4797
     * @method _parseSeriesAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4798
     * @param {Array} c A collection `PieSeries` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4799
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4800
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4801
    _parseSeriesAxes: function(c)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4802
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4803
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4804
            len = c.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4805
            s,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4806
            axes = this.get("axes"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4807
            axis;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4808
        for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4809
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4810
            s = c[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4811
            if(s)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4812
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4813
                //If series is an actual series instance,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4814
                //replace axes attribute string ids with axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4815
                if(s instanceof Y.PieSeries)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4816
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4817
                    axis = s.get("categoryAxis");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4818
                    if(axis && !(axis instanceof Y.Axis))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4819
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4820
                        s.set("categoryAxis", axes[axis]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4821
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4822
                    axis = s.get("valueAxis");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4823
                    if(axis && !(axis instanceof Y.Axis))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4824
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4825
                        s.set("valueAxis", axes[axis]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4826
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4827
                    continue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4828
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4829
                s.categoryAxis = axes.category;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4830
                s.valueAxis = axes.values;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4831
                if(!s.type)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4832
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4833
                    s.type = this.get("type");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4834
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4835
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4836
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4837
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4838
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4839
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4840
     * Generates and returns a key-indexed object containing `Axis` instances or objects used to create `Axis` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4841
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4842
     * @method _getDefaultAxes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4843
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4844
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4845
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4846
    _getDefaultAxes: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4847
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4848
        var catKey = this.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4849
            seriesKeys = this.get("seriesKeys").concat(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4850
            seriesAxis = "numeric";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4851
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4852
            values:{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4853
                keys:seriesKeys,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4854
                type:seriesAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4855
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4856
            category:{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4857
                keys:[catKey],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4858
                type:this.get("categoryType")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4859
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4860
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4861
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4862
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4863
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4864
     * Returns an object literal containing a categoryItem and a valueItem for a given series index.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4865
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4866
     * @method getSeriesItem
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4867
     * @param series Reference to a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4868
     * @param index Index of the specified item within a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4869
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4870
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4871
    getSeriesItems: function(series, index)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4872
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4873
        var categoryItem = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4874
                axis: series.get("categoryAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4875
                key: series.get("categoryKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4876
                displayName: series.get("categoryDisplayName")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4877
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4878
            valueItem = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4879
                axis: series.get("valueAxis"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4880
                key: series.get("valueKey"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4881
                displayName: series.get("valueDisplayName")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4882
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4883
        categoryItem.value = categoryItem.axis.getKeyValueAt(categoryItem.key, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4884
        valueItem.value = valueItem.axis.getKeyValueAt(valueItem.key, index);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4885
        return {category:categoryItem, value:valueItem};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4886
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4887
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4888
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4889
     * Handler for sizeChanged event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4890
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4891
     * @method _sizeChanged
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4892
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4893
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4894
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4895
    _sizeChanged: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4896
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4897
        this._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4898
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4899
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4900
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4901
     * Redraws the chart instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4902
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4903
     * @method _redraw
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4904
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4905
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4906
    _redraw: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4907
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4908
        var graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4909
            w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4910
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4911
            dimension;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4912
        if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4913
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4914
            dimension = Math.min(w, h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4915
            graph.set("width", dimension);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4916
            graph.set("height", dimension);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4917
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4918
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4919
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4920
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4921
     * Formats tooltip text for a pie chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4922
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4923
     * @method _tooltipLabelFunction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4924
     * @param {Object} categoryItem An object containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4925
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4926
     *      <dt>axis</dt><dd>The axis to which the category is bound.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4927
     *      <dt>displayName</dt><dd>The display name set to the category (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4928
     *      <dt>key</dt><dd>The key of the category.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4929
     *      <dt>value</dt><dd>The value of the category</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4930
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4931
     * @param {Object} valueItem An object containing the following:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4932
     *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4933
     *      <dt>axis</dt><dd>The axis to which the item's series is bound.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4934
     *      <dt>displayName</dt><dd>The display name of the series. (defaults to key if not provided)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4935
     *      <dt>key</dt><dd>The key for the series.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4936
     *      <dt>value</dt><dd>The value for the series item.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4937
     *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4938
     * @param {Number} itemIndex The index of the item within the series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4939
     * @param {CartesianSeries} series The `PieSeries` instance of the item.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4940
     * @return {HTMLElement}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4941
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4942
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4943
    _tooltipLabelFunction: function(categoryItem, valueItem, itemIndex, series)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4944
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4945
        var msg = DOCUMENT.createElement("div"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4946
            total = series.getTotalValues(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4947
            pct = Math.round((valueItem.value / total) * 10000)/100;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4948
        msg.appendChild(DOCUMENT.createTextNode(categoryItem.displayName +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4949
        ": " + categoryItem.axis.get("labelFunction").apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")])));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4950
        msg.appendChild(DOCUMENT.createElement("br"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4951
        msg.appendChild(DOCUMENT.createTextNode(valueItem.displayName +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4952
        ": " + valueItem.axis.get("labelFunction").apply(this, [valueItem.value, valueItem.axis.get("labelFormat")])));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4953
        msg.appendChild(DOCUMENT.createElement("br"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4954
        msg.appendChild(DOCUMENT.createTextNode(pct + "%"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4955
        return msg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4956
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4957
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4958
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4959
     * Returns the appropriate message based on the key press.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4960
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4961
     * @method _getAriaMessage
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4962
     * @param {Number} key The keycode that was pressed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4963
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4964
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4965
    _getAriaMessage: function(key)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4966
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4967
        var msg = "",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4968
            categoryItem,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4969
            items,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4970
            series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4971
            valueItem,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4972
            seriesIndex = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4973
            itemIndex = this._itemIndex,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4974
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4975
            total,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4976
            pct,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4977
            markers;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4978
        series = this.getSeries(parseInt(seriesIndex, 10));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4979
        markers = series.get("markers");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4980
        len = markers && markers.length ? markers.length : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4981
        if(key === 37)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4982
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4983
            itemIndex = itemIndex > 0 ? itemIndex - 1 : len - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4984
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4985
        else if(key === 39)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4986
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4987
            itemIndex = itemIndex >= len - 1 ? 0 : itemIndex + 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4988
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4989
        this._itemIndex = itemIndex;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4990
        items = this.getSeriesItems(series, itemIndex);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4991
        categoryItem = items.category;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4992
        valueItem = items.value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4993
        total = series.getTotalValues();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4994
        pct = Math.round((valueItem.value / total) * 10000)/100;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4995
        if(categoryItem && valueItem)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4996
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4997
            msg += categoryItem.displayName +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4998
                ": " +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  4999
                categoryItem.axis.formatLabel.apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]) +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5000
                ", ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5001
            msg += valueItem.displayName +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5002
                ": " + valueItem.axis.formatLabel.apply(this, [valueItem.value, valueItem.axis.get("labelFormat")]) +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5003
                ", ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5004
            msg += "Percent of total " + valueItem.displayName + ": " + pct + "%,";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5005
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5006
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5007
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5008
            msg += "No data available,";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5009
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5010
        msg += (itemIndex + 1) + " of " + len + ". ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5011
        return msg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5012
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5013
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5014
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5015
     * Destructor implementation for the PieChart class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5016
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5017
     * @method destructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5018
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5019
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5020
    destructor: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5021
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5022
        var series,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5023
            axis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5024
            tooltip = this.get("tooltip"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5025
            tooltipNode = tooltip.node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5026
            graph = this.get("graph"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5027
            axesCollection = this._axesCollection,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5028
            seriesCollection = this.get("seriesCollection");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5029
        while(seriesCollection.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5030
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5031
            series = seriesCollection.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5032
            series.destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5033
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5034
        while(axesCollection.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5035
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5036
            axis = axesCollection.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5037
            if(axis instanceof Y.Axis)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5038
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5039
                axis.destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5040
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5041
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5042
        if(this._description)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5043
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5044
            this._description.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5045
            this._description.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5046
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5047
        if(this._liveRegion)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5048
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5049
            this._liveRegion.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5050
            this._liveRegion.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5051
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5052
        if(graph)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5053
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5054
            graph.destroy(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5055
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5056
        if(tooltipNode)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5057
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5058
            tooltipNode.empty();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5059
            tooltipNode.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5060
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5061
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5062
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5063
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5064
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5065
         * Sets the aria description for the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5066
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5067
         * @attribute ariaDescription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5068
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5069
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5070
        ariaDescription: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5071
            value: "Use the left and right keys to navigate through items.",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5072
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5073
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5074
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5075
                if(this._description)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5076
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5077
                    this._description.set("text", val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5078
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5079
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5080
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5081
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5082
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5083
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5084
         * Axes to appear in the chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5085
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5086
         * @attribute axes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5087
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5088
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5089
        axes: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5090
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5091
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5092
                return this._axes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5093
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5094
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5095
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5096
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5097
                this._parseAxes(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5098
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5099
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5100
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5101
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5102
         * Collection of series to appear on the chart. This can be an array of Series instances or object literals
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5103
         * used to describe a Series instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5104
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5105
         * @attribute seriesCollection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5106
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5107
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5108
        seriesCollection: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5109
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5110
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5111
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5112
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5113
                return this._getSeriesCollection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5114
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5115
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5116
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5117
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5118
                return this._setSeriesCollection(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5119
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5120
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5121
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5122
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5123
         * Type of chart when there is no series collection specified.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5124
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5125
         * @attribute type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5126
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5127
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5128
        type: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5129
            value: "pie"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5130
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5131
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5132
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5133
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5134
 * The Chart class is the basic application used to create a chart.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5135
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5136
 * @class Chart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5137
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5138
 * @submodule charts-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5139
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5140
function Chart(cfg)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5141
{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5142
    if(cfg.type !== "pie")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5143
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5144
        return new Y.CartesianChart(cfg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5145
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5146
    else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5147
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5148
        return new Y.PieChart(cfg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5149
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5150
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5151
Y.Chart = Chart;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5152
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5153
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5154
}, '@VERSION@', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5155
    "requires": [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5156
        "dom",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5157
        "event-mouseenter",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5158
        "event-touch",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5159
        "graphics-group",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5160
        "axes",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5161
        "series-pie",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5162
        "series-line",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5163
        "series-marker",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5164
        "series-area",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5165
        "series-spline",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5166
        "series-column",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5167
        "series-bar",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5168
        "series-areaspline",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5169
        "series-combo",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5170
        "series-combospline",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5171
        "series-line-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5172
        "series-marker-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5173
        "series-area-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5174
        "series-spline-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5175
        "series-column-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5176
        "series-bar-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5177
        "series-areaspline-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5178
        "series-combo-stacked",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5179
        "series-combospline-stacked"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5180
    ]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  5181
});