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