src/cm/media/js/lib/yui/yui_3.10.3/build/axis-numeric-base/axis-numeric-base-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
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('axis-numeric-base', 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 the handling of numeric axis data for a chart.
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 axis-numeric-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 * NumericImpl contains logic for numeric data. NumericImpl is used by the following classes:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 * <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 *      <li>{{#crossLink "NumericAxisBase"}}{{/crossLink}}</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 *      <li>{{#crossLink "NumericAxis"}}{{/crossLink}}</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 *  </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
 * @class NumericImpl
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
 * @submodule axis-numeric-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
function NumericImpl()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
NumericImpl.NAME = "numericImpl";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
NumericImpl.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
     * Indicates whether 0 should always be displayed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
     * @attribute alwaysShowZero
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
     * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    alwaysShowZero: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
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 used for formatting a label. This attribute allows for the default label formatting method to overridden.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
     * The method use would need to implement the arguments below and return a `String` or an `HTMLElement`. The default
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
     * implementation of the method returns a `String`. The output of this method will be rendered to the DOM using
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
     * `appendChild`. If you override the `labelFunction` method and return an html string, you will also need to override
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
     * the Data' `appendLabelFunction` to accept html as a `String`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
     * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
     *      <dt>val</dt><dd>Label to be formatted. (`String`)</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
     *      <dt>format</dt><dd>Object containing properties used to format the label. (optional)</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
     * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
     * @attribute labelFunction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
     */
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
     * Object containing properties used by the `labelFunction` to format a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
     * label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
     * @attribute labelFormat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    labelFormat: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        value: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
            prefix: "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            thousandsSeparator: "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
            decimalSeparator: "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            decimalPlaces: "0",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            suffix: ""
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     *Indicates how to round unit values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     *      <dt>niceNumber</dt><dd>Units will be smoothed based on the number of ticks and data range.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     *      <dt>auto</dt><dd>If the range is greater than 1, the units will be rounded.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     *      <dt>numeric value</dt><dd>Units will be equal to the numeric value.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     *      <dt>null</dt><dd>No rounding will occur.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
     * @attribute roundingMethod
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
     * @default niceNumber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    roundingMethod: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        value: "niceNumber"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
NumericImpl.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        this.after("alwaysShowZeroChange", this._keyChangeHandler);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        this.after("roundingMethodChange", this._keyChangeHandler);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
     * Formats a label based on the axis type and optionally specified format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
     * @method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     * @param {Object} value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
     * @param {Object} format Pattern used to format the value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
     * @return String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    formatLabel: function(val, format)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        if(format)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            return Y.DataType.Number.format(val, format);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     * Returns the sum of all values per key.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     * @method getTotalByKey
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     * @param {String} key The identifier for the array whose values will be calculated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    getTotalByKey: function(key)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        var total = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            values = this.getDataByKey(key),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            val,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
            len = values ? values.length : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
           val = parseFloat(values[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
           if(!isNaN(val))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
           {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
                total += val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
           }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        return total;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
     * Type of data used in `Data`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
     * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
    _type: "numeric",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
     * Helper method for getting a `roundingUnit` when calculating the minimum and maximum values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
     * @method _getMinimumUnit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
     * @param {Number} max Maximum number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
     * @param {Number} min Minimum number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
     * @param {Number} units Number of units on the axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    _getMinimumUnit:function(max, min, units)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        return this._getNiceNumber(Math.ceil((max - min)/units));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
     * Calculates a nice rounding unit based on the range.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
     * @method _getNiceNumber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
     * @param {Number} roundingUnit The calculated rounding unit.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    _getNiceNumber: function(roundingUnit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        var tempMajorUnit = roundingUnit,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
            order = Math.ceil(Math.log(tempMajorUnit) * 0.4342944819032518),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
            roundedMajorUnit = Math.pow(10, order),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
            roundedDiff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        if (roundedMajorUnit / 2 >= tempMajorUnit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
            roundedDiff = Math.floor((roundedMajorUnit / 2 - tempMajorUnit) / (Math.pow(10,order-1)/2));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            tempMajorUnit = roundedMajorUnit/2 - roundedDiff*Math.pow(10,order-1)/2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
            tempMajorUnit = roundedMajorUnit;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        if(!isNaN(tempMajorUnit))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
            return tempMajorUnit;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        return roundingUnit;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
     * Calculates the maximum and minimum values for the `Data`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
     * @method _updateMinAndMax
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    _updateMinAndMax: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        var data = this.get("data"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
            max,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            min,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            num,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
            setMax = this.get("setMax"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            setMin = this.get("setMin");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        if(!setMax || !setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
            if(data && data.length && data.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
                len = data.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
                for(; i < len; i++)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
                    num = data[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
                    if(isNaN(num))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
                        max = setMax ? this._setMaximum : max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
                        min = setMin ? this._setMinimum : min;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
                        continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
                    if(setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
                        min = this._setMinimum;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                    else if(min === undefined)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
                        min = num;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
                        min = Math.min(num, min);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
                    if(setMax)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
                        max = this._setMaximum;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                    else if(max === undefined)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                        max = num;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
                        max = Math.max(num, max);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
                    this._actualMaximum = max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
                    this._actualMinimum = min;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            this._roundMinAndMax(min, max, setMin, setMax);
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
     * Rounds the mimimum and maximum values based on the `roundingUnit` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
     * @method _roundMinAndMax
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
     * @param {Number} min Minimum value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
     * @param {Number} max Maximum value
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
    _roundMinAndMax: function(min, max, setMin, setMax)
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 roundingUnit,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            minimumRange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            minGreaterThanZero = min >= 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            maxGreaterThanZero = max > 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            dataRangeGreater,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            maxRound,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            minRound,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
            topTicks,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            botTicks,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
            tempMax,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
            tempMin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            units = this.getTotalMajorUnits() - 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            alwaysShowZero = this.get("alwaysShowZero"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            roundingMethod = this.get("roundingMethod"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
            useIntegers = (max - min)/units >= 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
        if(roundingMethod)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            if(roundingMethod === "niceNumber")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                roundingUnit = this._getMinimumUnit(max, min, units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
                if(minGreaterThanZero && maxGreaterThanZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                    if((alwaysShowZero || min < roundingUnit) && !setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                        min = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                        roundingUnit = this._getMinimumUnit(max, min, units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                       min = this._roundDownToNearest(min, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
                    if(setMax)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                        if(!alwaysShowZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
                            min = max - (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                    else if(setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                        max = min + (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
                        max = this._roundUpToNearest(max, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
                else if(maxGreaterThanZero && !minGreaterThanZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
                    if(alwaysShowZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
                        topTicks = Math.round(units/((-1 * min)/max + 1));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
                        topTicks = Math.max(Math.min(topTicks, units - 1), 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
                        botTicks = units - topTicks;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
                        tempMax = Math.ceil( max/topTicks );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
                        tempMin = Math.floor( min/botTicks ) * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
                        if(setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                            while(tempMin < tempMax && botTicks >= 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                                botTicks--;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                                topTicks++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                                tempMax = Math.ceil( max/topTicks );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
                                tempMin = Math.floor( min/botTicks ) * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                            //if there are any bottom ticks left calcualate the maximum by multiplying by the tempMin value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
                            //if not, it's impossible to ensure that a zero is shown. skip it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                            if(botTicks > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
                                max = tempMin * topTicks;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                                max = min + (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
                        else if(setMax)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
                            while(tempMax < tempMin && topTicks >= 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
                                botTicks++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
                                topTicks--;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
                                tempMin = Math.floor( min/botTicks ) * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
                                tempMax = Math.ceil( max/topTicks );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
                            //if there are any top ticks left calcualate the minimum by multiplying by the tempMax value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
                            //if not, it's impossible to ensure that a zero is shown. skip it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
                            if(topTicks > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                                min = tempMax * botTicks * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                                min = max - (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
                            roundingUnit = Math.max(tempMax, tempMin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
                            roundingUnit = this._getNiceNumber(roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
                            max = roundingUnit * topTicks;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
                            min = roundingUnit * botTicks * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                        if(setMax)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
                            min = max - (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
                        else if(setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
                            max = min + (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
                        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
                            min = this._roundDownToNearest(min, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
                            max = this._roundUpToNearest(max, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
                else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
                    if(setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
                        if(alwaysShowZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
                            max = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
                        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
                            max = min + (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
                    else if(!setMax)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                        if(alwaysShowZero || max === 0 || max + roundingUnit > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                            max = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                            roundingUnit = this._getMinimumUnit(max, min, units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                            min = max - (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                            min = this._roundDownToNearest(min, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                            max = this._roundUpToNearest(max, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                        min = max - (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            else if(roundingMethod === "auto")
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(minGreaterThanZero && maxGreaterThanZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
                    if((alwaysShowZero || min < (max-min)/units) && !setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
                        min = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
                    roundingUnit = (max - min)/units;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
                    if(useIntegers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
                        roundingUnit = Math.ceil(roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
                        max = min + (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
                        max = min + Math.ceil(roundingUnit * units * 100000)/100000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                else if(maxGreaterThanZero && !minGreaterThanZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
                    if(alwaysShowZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
                        topTicks = Math.round( units / ( (-1 * min) /max + 1) );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
                        topTicks = Math.max(Math.min(topTicks, units - 1), 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
                        botTicks = units - topTicks;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
                        if(useIntegers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                            tempMax = Math.ceil( max/topTicks );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                            tempMin = Math.floor( min/botTicks ) * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                            roundingUnit = Math.max(tempMax, tempMin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                            max = roundingUnit * topTicks;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                            min = roundingUnit * botTicks * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
                        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
                            tempMax = max/topTicks;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
                            tempMin = min/botTicks * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
                            roundingUnit = Math.max(tempMax, tempMin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
                            max = Math.ceil(roundingUnit * topTicks * 100000)/100000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
                            min = Math.ceil(roundingUnit * botTicks * 100000)/100000 * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
                        roundingUnit = (max - min)/units;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
                        if(useIntegers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
                            roundingUnit = Math.ceil(roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
                        min = Math.round(this._roundDownToNearest(min, roundingUnit) * 100000)/100000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
                        max = Math.round(this._roundUpToNearest(max, roundingUnit) * 100000)/100000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
                    }
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
                    roundingUnit = (max - min)/units;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                    if(useIntegers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                        roundingUnit = Math.ceil(roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                    if(alwaysShowZero || max === 0 || max + roundingUnit > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                        max = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                        roundingUnit = (max - min)/units;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                        if(useIntegers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                            Math.ceil(roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                            min = max - (roundingUnit * units);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                            min = max - Math.ceil(roundingUnit * units * 100000)/100000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                        min = this._roundDownToNearest(min, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
                        max = this._roundUpToNearest(max, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
            else if(!isNaN(roundingMethod) && isFinite(roundingMethod))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
                roundingUnit = roundingMethod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                minimumRange = roundingUnit * units;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                dataRangeGreater = (max - min) > minimumRange;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                minRound = this._roundDownToNearest(min, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
                maxRound = this._roundUpToNearest(max, roundingUnit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
                if(setMax)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
                    min = max - minimumRange;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
                else if(setMin)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
                    max = min + minimumRange;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
                else if(minGreaterThanZero && maxGreaterThanZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                    if(alwaysShowZero || minRound <= 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
                        min = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
                        min = minRound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                    max = min + minimumRange;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                else if(maxGreaterThanZero && !minGreaterThanZero)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                    min = minRound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
                    max = maxRound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                    if(alwaysShowZero || maxRound >= 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                        max = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
                        max = maxRound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
                    min = max - minimumRange;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
        this._dataMaximum = max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
        this._dataMinimum = min;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
     * Rounds a Number to the nearest multiple of an input. For example, by rounding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
     * 16 to the nearest 10, you will receive 20. Similar to the built-in function Math.round().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
     * @method _roundToNearest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
     * @param {Number} number Number to round
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
     * @param {Number} nearest Multiple to round towards.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
    _roundToNearest: function(number, nearest)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
        nearest = nearest || 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
        var roundedNumber = Math.round(this._roundToPrecision(number / nearest, 10)) * nearest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
        return this._roundToPrecision(roundedNumber, 10);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
     * Rounds a Number up to the nearest multiple of an input. For example, by rounding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
     * 16 up to the nearest 10, you will receive 20. Similar to the built-in function Math.ceil().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
     * @method _roundUpToNearest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
     * @param {Number} number Number to round
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
     * @param {Number} nearest Multiple to round towards.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    _roundUpToNearest: function(number, nearest)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
        nearest = nearest || 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
        return Math.ceil(this._roundToPrecision(number / nearest, 10)) * nearest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
     * Rounds a Number down to the nearest multiple of an input. For example, by rounding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
     * 16 down to the nearest 10, you will receive 10. Similar to the built-in function Math.floor().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
     * @method _roundDownToNearest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
     * @param {Number} number Number to round
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
     * @param {Number} nearest Multiple to round towards.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
    _roundDownToNearest: function(number, nearest)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
        nearest = nearest || 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
        return Math.floor(this._roundToPrecision(number / nearest, 10)) * nearest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
     * Rounds a number to a certain level of precision. Useful for limiting the number of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
     * decimal places on a fractional number.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
     * @method _roundToPrecision
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
     * @param {Number} number Number to round
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
     * @param {Number} precision Multiple to round towards.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
    _roundToPrecision: function(number, precision)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
        precision = precision || 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
        var decimalPlaces = Math.pow(10, precision);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
        return Math.round(decimalPlaces * number) / decimalPlaces;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
Y.NumericImpl = NumericImpl;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
 * NumericAxisBase manages numeric data for an axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
 * @class NumericAxisBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
 * @extends AxisBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
 * @uses NumericImpl
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
 * @param {Object} config (optional) Configuration parameters.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
 * @submodule axis-numeric-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
Y.NumericAxisBase = Y.Base.create("numericAxisBase", Y.AxisBase, [Y.NumericImpl]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
}, '3.10.3', {"requires": ["axis-base"]});