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