src/cm/media/js/lib/yui/yui_3.10.3/build/series-stacked/series-stacked-debug.js
author gibus
Tue, 11 Feb 2014 12:33:25 +0100
changeset 572 93383e54e042
parent 525 89ef5ed3c48b
permissions -rw-r--r--
Font size for piwik optout iframe.
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-stacked', 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 creating stacked 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-stacked
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 creating stacked series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 * @module charts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 * @class StackingUtil
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
 * @submodule series-stacked
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
function StackingUtil(){}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
StackingUtil.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
     * Indicates whether the series is stacked.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
     * @property _stacked
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    _stacked: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
     * Adjusts coordinate values for stacked series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
     * @method _stackCoordinates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    _stackCoordinates: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        if(this.get("direction") === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
            this._stackXCoords();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
            this._stackYCoords();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     * Stacks coordinates for a stacked vertical series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
     * @method _stackXCoords
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    _stackXCoords: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        var order = this.get("order"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
            seriesCollection = this.get("seriesTypeCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
            xcoords = this.get("xcoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
            ycoords = this.get("ycoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            coord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
            prevCoord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            prevOrder,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            stackedXCoords = xcoords.concat(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
            prevXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
            prevYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
            nullIndices = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            nullIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        if(order > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
            prevXCoords = seriesCollection[order - 1].get("stackedXCoords");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
            prevYCoords = seriesCollection[order - 1].get("stackedYCoords");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            len = prevXCoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
            len = xcoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        for(; i < len; i = i + 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            if(Y_Lang.isNumber(xcoords[i]))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                if(order > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                    prevCoord = prevXCoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                    if(!Y_Lang.isNumber(prevCoord))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
                        prevOrder = order;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
                        while(prevOrder >  - 1 && !Y_Lang.isNumber(prevCoord))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
                            prevOrder = prevOrder - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
                            if(prevOrder > -1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
                                prevCoord = seriesCollection[prevOrder].get("stackedXCoords")[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
                            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
                                prevCoord = this._leftOrigin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
                    xcoords[i] = xcoords[i] + prevCoord;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
                stackedXCoords[i] = xcoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
                nullIndices.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        this._cleanXNaN(stackedXCoords, ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        len = nullIndices.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        if(len > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
            for(i = 0; i < len; i = i + 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
                nullIndex = nullIndices[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
                coord = order > 0 ? prevXCoords[nullIndex] : this._leftOrigin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                stackedXCoords[nullIndex] =  Math.max(stackedXCoords[nullIndex], coord);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        this.set("stackedXCoords", stackedXCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        this.set("stackedYCoords", ycoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
     * Stacks coordinates for a stacked horizontal series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
     * @method _stackYCoords
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    _stackYCoords: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        var order = this.get("order"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            graphic = this.get("graphic"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
            h = graphic.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            seriesCollection = this.get("seriesTypeCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
            xcoords = this.get("xcoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
            ycoords = this.get("ycoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            coord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            prevCoord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            prevOrder,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
            stackedYCoords = ycoords.concat(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            prevXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            prevYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            nullIndices = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            nullIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        if(order > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            prevXCoords = seriesCollection[order - 1].get("stackedXCoords");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            prevYCoords = seriesCollection[order - 1].get("stackedYCoords");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            len = prevYCoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            len = ycoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        for(; i < len; i = i + 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
            if(Y_Lang.isNumber(ycoords[i]))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                if(order > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                    prevCoord = prevYCoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
                    if(!Y_Lang.isNumber(prevCoord))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
                        prevOrder = order;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
                        while(prevOrder >  - 1 && !Y_Lang.isNumber(prevCoord))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
                            prevOrder = prevOrder - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
                            if(prevOrder > -1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
                                prevCoord = seriesCollection[prevOrder].get("stackedYCoords")[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
                            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
                                prevCoord = this._bottomOrigin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
                    ycoords[i] = prevCoord - (h - ycoords[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
                stackedYCoords[i] = ycoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
                nullIndices.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        this._cleanYNaN(xcoords, stackedYCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        len = nullIndices.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        if(len > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            for(i = 0; i < len; i = i + 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
                nullIndex = nullIndices[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
                coord = order > 0 ? prevYCoords[nullIndex] : h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
                stackedYCoords[nullIndex] =  Math.min(stackedYCoords[nullIndex], coord);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        this.set("stackedXCoords", xcoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        this.set("stackedYCoords", stackedYCoords);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
     * Cleans invalid x-coordinates by calculating their value based on the corresponding y-coordinate, the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
     * previous valid x-coordinate with its corresponding y-coordinate and the next valid x-coordinate with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
     * its corresponding y-coordinate. If there is no previous or next valid x-coordinate, the value will not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
     * be altered.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
     * @method _cleanXNaN
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
     * @param {Array} xcoords An array of x-coordinate values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
     * @param {Array} ycoords An arry of y-coordinate values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    _cleanXNaN: function(xcoords, ycoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        var previousValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
            nextValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
            previousValidX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
            previousValidY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
            nextValidX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            nextValidY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
            isNumber = Y_Lang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
            m,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            len = ycoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            x = xcoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            y = ycoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            //if x is invalid, calculate where it should be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            if(!isNumber(x) && i > 0 && i < len - 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
                previousValidY = ycoords[i - 1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
                //check to see if the previous value is valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                previousValidX = this._getPreviousValidCoordValue(xcoords, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                nextValidY = ycoords[i + 1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                nextValidX = this._getNextValidCoordValue(xcoords, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
                //check to see if the next value is valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
                if(isNumber(previousValidX) && isNumber(nextValidX))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
                    //calculate slope and solve for x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
                    m = (nextValidY - previousValidY) / (nextValidX - previousValidX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
                    xcoords[i] = (y + (m * previousValidX) - previousValidY)/m;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
                previousValidIndex = NaN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
                nextValidIndex = NaN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    },
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
     * Returns the previous valid (numeric) value in an array if available.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
     * @method _getPreviousValidCoordValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
     * @param {Array} coords Array of values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
     * @param {Number} index The index in the array in which to begin searching.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    _getPreviousValidCoordValue: function(coords, index)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        var coord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            isNumber = Y_Lang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            limit = -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        while(!isNumber(coord) && index > limit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            index = index - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            coord = coords[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
        return coord;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
     * Returns the next valid (numeric) value in an array if available.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
     * @method _getNextValidCoordValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
     * @param {Array} coords Array of values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
     * @param {Number} index The index in the array in which to begin searching.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    _getNextValidCoordValue: function(coords, index)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        var coord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
            isNumber = Y_Lang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
            limit = coords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
        while(!isNumber(coord) && index < limit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
            index = index + 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            coord = coords[index];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        return coord;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
     * Cleans invalid y-coordinates by calculating their value based on the corresponding x-coordinate, the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
     * previous valid y-coordinate with its corresponding x-coordinate and the next valid y-coordinate with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
     * its corresponding x-coordinate. If there is no previous or next valid y-coordinate, the value will not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
     * be altered.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
     * @method _cleanYNaN
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
     * @param {Array} xcoords An array of x-coordinate values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
     * @param {Array} ycoords An arry of y-coordinate values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    _cleanYNaN: function(xcoords, ycoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        var previousValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
            nextValidIndex,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            previousValidX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
            previousValidY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
            nextValidX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            nextValidY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            isNumber = Y_Lang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            m,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            len = xcoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
        for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
            x = xcoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
            y = ycoords[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
            //if y is invalid, calculate where it should be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            if(!isNumber(y) && i > 0 && i < len - 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
                //check to see if the previous value is valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                previousValidX = xcoords[i - 1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
                previousValidY = this._getPreviousValidCoordValue(ycoords, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                //check to see if the next value is valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                nextValidX = xcoords[i + 1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
                nextValidY = this._getNextValidCoordValue(ycoords, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
                if(isNumber(previousValidY) && isNumber(nextValidY))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
                    //calculate slope and solve for y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                    m = (nextValidY - previousValidY) / (nextValidX - previousValidX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
                    ycoords[i] = previousValidY + ((m * x) - (m * previousValidX));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
                previousValidIndex = NaN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
                nextValidIndex = NaN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
Y.StackingUtil = StackingUtil;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
}, '3.10.3', {"requires": ["axis-stacked"]});