src/cm/media/js/lib/yui/yui_3.10.3/build/series-fill-util/series-fill-util-debug.js
author ymh <ymh.work@gmail.com>
Fri, 14 Mar 2014 13:16:10 +0100
changeset 611 fa66f4bb1563
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add some more custom config and put every thing in comment in the custom.yaml template
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('series-fill-util', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Provides functionality for drawing fills in a series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @module charts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @submodule series-fill-util
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
var Y_Lang = Y.Lang;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 * Utility class used for drawing area fills.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 * @class Fills
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 * @submodule series-fill-util
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
function Fills() {}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
Fills.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    area: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
            return this._defaults || this._getAreaDefaults();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
            var defaults = this._defaults || this._getAreaDefaults();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
            this._defaults = Y.merge(defaults, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
Fills.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
     * Returns a path shape used for drawing fills.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     * @method _getPath
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
     * @return Path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    _getPath: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        var path = this._path;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        if(!path)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
            path = this.get("graphic").addShape({type:"path"});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            this._path = path;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        return path;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
     * Toggles visibility
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
     * @method _toggleVisible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
     * @param {Boolean} visible indicates visibilitye
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    _toggleVisible: function(visible)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        if(this._path)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            this._path.set("visible", visible);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * Draws fill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * @method drawFill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * @param {Array} xcoords The x-coordinates for the series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     * @param {Array} ycoords The y-coordinates for the series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    drawFill: function(xcoords, ycoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        if(xcoords.length < 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        var isNumber = Y_Lang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
            len = xcoords.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            firstX = xcoords[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
            firstY = ycoords[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
            lastValidX = firstX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            lastValidY = firstY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
            nextX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            nextY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            pointValid,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
            noPointsRendered = true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            styles = this.get("styles").area,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
            path = this._getPath(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
            color = styles.color || this._getDefaultColor(this.get("graphOrder"), "slice");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        path.clear();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        path.set("fill", {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
            color: color,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
            opacity: styles.alpha
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        path.set("stroke", {weight: 0});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        for(; i < len; i = ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
            nextX = xcoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            nextY = ycoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            pointValid = isNumber(nextX) && isNumber(nextY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            if(!pointValid)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
                continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            if(noPointsRendered)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
                this._firstValidX = nextX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
                this._firstValidY = nextY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
                noPointsRendered = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                path.moveTo(nextX, nextY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                path.lineTo(nextX, nextY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
            lastValidX = nextX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            lastValidY = nextY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        this._lastValidX = lastValidX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        this._lastValidY = lastValidY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
        path.end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
     * Draws a fill for a spline
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
     * @method drawAreaSpline
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    drawAreaSpline: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
        if(this.get("xcoords").length < 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        var xcoords = this.get("xcoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            ycoords = this.get("ycoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            curvecoords = this.getCurveControlPoints(xcoords, ycoords),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            len = curvecoords.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
            cx1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            cx2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            cy1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            cy2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            firstX = xcoords[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            firstY = ycoords[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            styles = this.get("styles").area,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            path = this._getPath(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
            color = styles.color || this._getDefaultColor(this.get("graphOrder"), "slice");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        path.set("fill", {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            color: color,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
            opacity: styles.alpha
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        path.set("stroke", {weight: 0});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        path.moveTo(firstX, firstY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        for(; i < len; i = ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
            x = curvecoords[i].endx;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
            y = curvecoords[i].endy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
            cx1 = curvecoords[i].ctrlx1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
            cx2 = curvecoords[i].ctrlx2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
            cy1 = curvecoords[i].ctrly1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
            cy2 = curvecoords[i].ctrly2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            path.curveTo(cx1, cy1, cx2, cy2, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        if(this.get("direction") === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
            path.lineTo(this._leftOrigin, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
            path.lineTo(this._leftOrigin, firstY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            path.lineTo(x, this._bottomOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
            path.lineTo(firstX, this._bottomOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        path.lineTo(firstX, firstY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        path.end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
     * Draws a a stacked area spline
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
     * @method drawStackedAreaSpline
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    drawStackedAreaSpline: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        if(this.get("xcoords").length < 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        var xcoords = this.get("xcoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
            ycoords = this.get("ycoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            curvecoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
            order = this.get("order"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
            seriesCollection = this.get("seriesTypeCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            prevXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            prevYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
            cx1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
            cx2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            cy1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            cy2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            firstX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            firstY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            styles = this.get("styles").area,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            path = this._getPath(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            color = styles.color || this._getDefaultColor(this.get("graphOrder"), "slice");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
        firstX = xcoords[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        firstY = ycoords[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
        curvecoords = this.getCurveControlPoints(xcoords, ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        len = curvecoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
        path.set("fill", {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
            color: color,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            opacity: styles.alpha
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        path.set("stroke", {weight: 0});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        path.moveTo(firstX, firstY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        for(; i < len; i = ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            x = curvecoords[i].endx;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
            y = curvecoords[i].endy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            cx1 = curvecoords[i].ctrlx1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            cx2 = curvecoords[i].ctrlx2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            cy1 = curvecoords[i].ctrly1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            cy2 = curvecoords[i].ctrly2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            path.curveTo(cx1, cy1, cx2, cy2, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        if(order > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
            prevXCoords = seriesCollection[order - 1].get("xcoords").concat().reverse();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
            prevYCoords = seriesCollection[order - 1].get("ycoords").concat().reverse();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            curvecoords = this.getCurveControlPoints(prevXCoords, prevYCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            len = curvecoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            path.lineTo(prevXCoords[0], prevYCoords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            for(; i < len; i = ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
                x = curvecoords[i].endx;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
                y = curvecoords[i].endy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
                cx1 = curvecoords[i].ctrlx1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
                cx2 = curvecoords[i].ctrlx2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
                cy1 = curvecoords[i].ctrly1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
                cy2 = curvecoords[i].ctrly2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
                path.curveTo(cx1, cy1, cx2, cy2, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            if(this.get("direction") === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
                path.lineTo(this._leftOrigin, ycoords[ycoords.length-1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                path.lineTo(this._leftOrigin, firstY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
                path.lineTo(xcoords[xcoords.length-1], this._bottomOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
                path.lineTo(firstX, this._bottomOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        path.lineTo(firstX, firstY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
        path.end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
     * Storage for default area styles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
     * @property _defaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    _defaults: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
     * Concatenates coordinate array with correct coordinates for closing an area fill.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
     * @method _getClosingPoints
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
     * @return Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    _getClosingPoints: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
        var xcoords = this.get("xcoords").concat(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
            ycoords = this.get("ycoords").concat(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            firstValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
            lastValidIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        if(this.get("direction") === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
            lastValidIndex = this._getLastValidIndex(xcoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
            firstValidIndex = this._getFirstValidIndex(xcoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
            ycoords.push(ycoords[lastValidIndex]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
            ycoords.push(ycoords[firstValidIndex]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            xcoords.push(this._leftOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            xcoords.push(this._leftOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
            lastValidIndex = this._getLastValidIndex(ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            firstValidIndex = this._getFirstValidIndex(ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            xcoords.push(xcoords[lastValidIndex]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            xcoords.push(xcoords[firstValidIndex]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            ycoords.push(this._bottomOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
            ycoords.push(this._bottomOrigin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        xcoords.push(xcoords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        ycoords.push(ycoords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        return [xcoords, ycoords];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
     * Returns the order of the series closest to the current series that has a valid value for the current index.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
     * @method _getHighestValidOrder
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
     * @param {Array} seriesCollection Array of series of a given type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
     * @param {Number} index Index of the series item.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
     * @param {Number} order Index of the the series in the seriesCollection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
     * @param {String} direction Indicates the direction of the series
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    _getHighestValidOrder: function(seriesCollection, index, order, direction)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        var coords = direction === "vertical" ? "stackedXCoords" : "stackedYCoords",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
            coord;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        while(isNaN(coord) && order > -1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
          order = order - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
          if(order > -1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
          {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            coord = seriesCollection[order].get(coords)[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
          }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        return order;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
     * Returns an array containing the x and y coordinates for a given series and index.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
     * @method _getCoordsByOrderAndIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
     * @param {Array} seriesCollection Array of series of a given type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
     * @param {Number} index Index of the series item.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
     * @param {Number} order Index of the the series in the seriesCollection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
     * @param {String} direction Indicates the direction of the series
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
     * @return Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
    _getCoordsByOrderAndIndex: function(seriesCollection, index, order, direction)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        var xcoord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
            ycoord;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
        if(direction === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
            xcoord = order < 0 ? this._leftOrigin : seriesCollection[order].get("stackedXCoords")[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
            ycoord = this.get("stackedYCoords")[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
            xcoord = this.get("stackedXCoords")[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
            ycoord = order < 0 ? this._bottomOrigin : seriesCollection[order].get("stackedYCoords")[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
        return [xcoord, ycoord];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
     * Concatenates coordinate array with the correct coordinates for closing an area stack.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
     * @method _getStackedClosingPoints
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
     * @return Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
    _getStackedClosingPoints: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
        var order = this.get("order"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
            direction = this.get("direction"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
            seriesCollection = this.get("seriesTypeCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            firstValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            lastValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
            xcoords = this.get("stackedXCoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
            ycoords = this.get("stackedYCoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
            limit,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
            previousSeries,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
            previousSeriesFirstValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            previousSeriesLastValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            previousXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
            previousYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            coords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            closingXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            closingYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
            currentIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            highestValidOrder,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
            oldOrder;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
        if(order < 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
          return this._getClosingPoints();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
        previousSeries = seriesCollection[order - 1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
        previousXCoords = previousSeries.get("stackedXCoords").concat();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
        previousYCoords = previousSeries.get("stackedYCoords").concat();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
        if(direction === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
            firstValidIndex = this._getFirstValidIndex(xcoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
            lastValidIndex = this._getLastValidIndex(xcoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
            previousSeriesFirstValidIndex = previousSeries._getFirstValidIndex(previousXCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
            previousSeriesLastValidIndex = previousSeries._getLastValidIndex(previousXCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            firstValidIndex = this._getFirstValidIndex(ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
            lastValidIndex = this._getLastValidIndex(ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            previousSeriesFirstValidIndex = previousSeries._getFirstValidIndex(previousYCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            previousSeriesLastValidIndex = previousSeries._getLastValidIndex(previousYCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
        if(previousSeriesLastValidIndex >= firstValidIndex && previousSeriesFirstValidIndex <= lastValidIndex)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            previousSeriesFirstValidIndex = Math.max(firstValidIndex, previousSeriesFirstValidIndex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            previousSeriesLastValidIndex = Math.min(lastValidIndex, previousSeriesLastValidIndex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            previousXCoords = previousXCoords.slice(previousSeriesFirstValidIndex, previousSeriesLastValidIndex + 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            previousYCoords = previousYCoords.slice(previousSeriesFirstValidIndex, previousSeriesLastValidIndex + 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            limit = previousSeriesFirstValidIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            limit = lastValidIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        closingXCoords = [xcoords[firstValidIndex]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        closingYCoords = [ycoords[firstValidIndex]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        currentIndex = firstValidIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        while((isNaN(highestValidOrder) || highestValidOrder < order - 1) && currentIndex <= limit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
            oldOrder = highestValidOrder;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
            highestValidOrder = this._getHighestValidOrder(seriesCollection, currentIndex, order, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            if(!isNaN(oldOrder) && highestValidOrder > oldOrder)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
                coords = this._getCoordsByOrderAndIndex(seriesCollection, currentIndex, oldOrder, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
                closingXCoords.push(coords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
                closingYCoords.push(coords[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
            coords = this._getCoordsByOrderAndIndex(seriesCollection, currentIndex, highestValidOrder, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            closingXCoords.push(coords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
            closingYCoords.push(coords[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
            currentIndex = currentIndex + 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
        if(previousXCoords &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
            previousXCoords.length > 0 &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
            previousSeriesLastValidIndex > firstValidIndex &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
            previousSeriesFirstValidIndex < lastValidIndex)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
            closingXCoords = closingXCoords.concat(previousXCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
            closingYCoords = closingYCoords.concat(previousYCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
            highestValidOrder = order -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
        currentIndex = Math.max(firstValidIndex, previousSeriesLastValidIndex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        order = order - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
        highestValidOrder = NaN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        while(currentIndex <= lastValidIndex)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
            oldOrder = highestValidOrder;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
            highestValidOrder = this._getHighestValidOrder(seriesCollection, currentIndex, order, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
            if(!isNaN(oldOrder))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
                if(highestValidOrder > oldOrder)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
                    coords = this._getCoordsByOrderAndIndex(seriesCollection, currentIndex, oldOrder, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
                    closingXCoords.push(coords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
                    closingYCoords.push(coords[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
                else if(highestValidOrder < oldOrder)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
                    coords = this._getCoordsByOrderAndIndex(seriesCollection, currentIndex - 1, highestValidOrder, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                    closingXCoords.push(coords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                    closingYCoords.push(coords[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            coords = this._getCoordsByOrderAndIndex(seriesCollection, currentIndex, highestValidOrder, direction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
            closingXCoords.push(coords[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
            closingYCoords.push(coords[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
            currentIndex = currentIndex + 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        closingXCoords.reverse();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
        closingYCoords.reverse();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
        return [xcoords.concat(closingXCoords), ycoords.concat(closingYCoords)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
     * Returns default values for area styles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
     * @method _getAreaDefaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
    _getAreaDefaults: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
Y.augment(Fills, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
Y.Fills = Fills;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
}, '3.10.3');