src/cm/media/js/lib/yui/yui3-3.15.0/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 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
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', 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 drawing a numeric axis for use with 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
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
 * NumericAxis draws a numeric axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
 * @class NumericAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
 * @extends Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
 * @uses NumericImpl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
 * @param {Object} config (optional) Configuration parameters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
 * @submodule axis-numeric
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
Y.NumericAxis = Y.Base.create("numericAxis", Y.Axis, [Y.NumericImpl], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
     * Calculates and returns a value based on the number of labels and the index of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
     * the current label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
     * @method getLabelByIndex
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
     * @param {Number} i Index of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
     * @param {Number} l Total number of labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    _getLabelByIndex: function(i, l)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
        var min = this.get("minimum"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
            max = this.get("maximum"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
            increm = (max - min)/(l-1),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
            label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
            roundingMethod = this.get("roundingMethod");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
            l -= 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
        //respect the min and max. calculate all other labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        if(i === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
            label = min;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
        else if(i === l)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
            label = max;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
            label = (i * increm);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
            if(roundingMethod === "niceNumber")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
                label = this._roundToNearest(label, increm);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
            label += min;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        return parseFloat(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
     * Returns an object literal containing and array of label values and an array of points.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
     * @method _getLabelData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
     * @param {Object} startPoint An object containing x and y values.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
     * @param {Number} edgeOffset Distance to offset coordinates.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
     * @param {Number} layoutLength Distance that the axis spans.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
     * @param {Number} count Number of labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
     * @param {String} direction Indicates whether the axis is horizontal or vertical.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
     * @param {Array} Array containing values for axis labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
    _getLabelData: function(constantVal, staticCoord, dynamicCoord, min, max, edgeOffset, layoutLength, count, dataValues)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        var dataValue,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            points = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            values = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            point,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            isVertical = staticCoord === "x",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            offset = isVertical ? layoutLength + edgeOffset : edgeOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
        dataValues = dataValues || this._getDataValuesByCount(count, min, max);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
        for(i = 0; i < count; i = i + 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
            dataValue = parseFloat(dataValues[i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
            if(dataValue <= max && dataValue >= min)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
                point = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
                point[staticCoord] = constantVal;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
                point[dynamicCoord] = this._getCoordFromValue(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
                    min,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                    max,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
                    layoutLength,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
                    dataValue,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
                    offset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
                    isVertical
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
                points.push(point);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
                values.push(dataValue);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            points: points,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
            values: values
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
     * Checks to see if data extends beyond the range of the axis. If so,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
     * that data will need to be hidden. This method is internal, temporary and subject
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
     * to removal in the future.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
     * @method _hasDataOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
     * @return Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
    _hasDataOverflow: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
        var roundingMethod,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
            min,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
            max;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        if(this.get("setMin") || this.get("setMax"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
        roundingMethod = this.get("roundingMethod");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
        min = this._actualMinimum;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
        max = this._actualMaximum;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
        if(Y_Lang.isNumber(roundingMethod) &&
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
            ((Y_Lang.isNumber(max) && max > this._dataMaximum) || (Y_Lang.isNumber(min) && min < this._dataMinimum)))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
        return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
}, '@VERSION@', {"requires": ["axis", "axis-numeric-base"]});