src/cm/media/js/lib/yui/yui_3.10.3/build/axis-numeric/axis-numeric.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
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', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Provides functionality for drawing a numeric axis for use with 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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
Y_Lang = Y.Lang;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 * NumericAxis draws a numeric axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 * @class NumericAxis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 * @extends Axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 * @uses NumericImpl
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
 * @param {Object} config (optional) Configuration parameters.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
 * @submodule axis-numeric
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
Y.NumericAxis = Y.Base.create("numericAxis", Y.Axis, [Y.NumericImpl], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
     * Calculates and returns a value based on the number of labels and the index of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
     * the current label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
     * @method getLabelByIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
     * @param {Number} i Index of the label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
     * @param {Number} l Total number of labels.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
     * @return String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    _getLabelByIndex: function(i, l)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        var min = this.get("minimum"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
            max = this.get("maximum"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
            increm = (max - min)/(l-1),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
            label,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
            roundingMethod = this.get("roundingMethod");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
            l -= 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        //respect the min and max. calculate all other labels.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        if(i === 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
            label = min;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        else if(i === l)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
            label = max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
            label = (i * increm);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
            if(roundingMethod === "niceNumber")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
                label = this._roundToNearest(label, increm);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
            label += min;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        return parseFloat(label);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     * Calculates points based off the majorUnit count or distance of the Axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * @method _getPoints
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     * @param {Object} startPoint An object literal containing the x and y coordinates of the first
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * point on the axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     * @param {Number} len The number of points on an axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     * @param {Number} edgeOffset The distance from the start of the axis and the point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     * @param {Number} majorUnitDistance The distance between points on an axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * @param {String} direction Indicates whether the axis is horizontal or vertical.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * @return Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    _getPoints: function(startPoint, len, edgeOffset, majorUnitDistance, direction)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        var points = Y.NumericAxis.superclass._getPoints.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        if(direction === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
            points.reverse();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        return points;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     * Calculates the position of ticks and labels based on an array of specified label values. Returns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * an object containing an array of values to be used for labels and an array of objects containing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     * x and y coordinates for each label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     * @method _getDataFromLabelValues
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     * @param {Object} startPoint An object containing the x and y coordinates for the start of the axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     * @param {Array} labelValues An array containing values to be used for determining the number and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
     * position of labels and ticks on the axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     * @param {Number} edgeOffset The distance, in pixels, on either edge of the axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
     * @param {Number} layoutLength The length, in pixels, of the axis. If the axis is vertical, the length
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     * is equal to the height. If the axis is horizontal, the length is equal to the width.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    _getDataFromLabelValues: function(startPoint, labelValues, edgeOffset, layoutLength, direction)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        var points = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
            labelValue,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
            len = labelValues.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            staticCoord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
            dynamicCoord,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            constantVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            newPoint,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            max = this.get("maximum"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            min = this.get("minimum"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            values = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            scaleFactor = (layoutLength - (edgeOffset * 2)) / (max - min);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        if(direction === "vertical")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            staticCoord = "x";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            dynamicCoord = "y";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            staticCoord = "y";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            dynamicCoord = "x";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        constantVal = startPoint[staticCoord];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        for(i = 0; i < len; i = i + 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            labelValue = labelValues[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            if(Y.Lang.isNumber(labelValue) && labelValue >= min && labelValue <= max)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
                newPoint = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
                newPoint[staticCoord] = constantVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
                newPoint[dynamicCoord] = (layoutLength - edgeOffset) - (labelValue - min) * scaleFactor;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
                points.push(newPoint);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
                values.push(labelValue);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            points: points,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            values: values
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
     * Checks to see if data extends beyond the range of the axis. If so,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
     * that data will need to be hidden. This method is internal, temporary and subject
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
     * to removal in the future.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     * @method _hasDataOverflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
     * @return Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    _hasDataOverflow: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        var roundingMethod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            min,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        if(this.get("setMin") || this.get("setMax"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        roundingMethod = this.get("roundingMethod");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
        min = this._actualMinimum;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        max = this._actualMaximum;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        if(Y_Lang.isNumber(roundingMethod) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
            ((Y_Lang.isNumber(max) && max > this._dataMaximum) || (Y_Lang.isNumber(min) && min < this._dataMinimum)))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
}, '3.10.3', {"requires": ["axis", "axis-numeric-base"]});