src/cm/media/js/lib/yui/yui3-3.15.0/build/series-range/series-range.js
author ymh <ymh.work@gmail.com>
Thu, 10 Apr 2014 17:30:29 +0200
changeset 630 36ef50b63372
parent 602 e16a97fb364a
permissions -rw-r--r--
update karma config after test lib moves
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('series-range', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * Provides functionality for creating a range series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 * @module charts
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @submodule series-range
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
 * An abstract class for creating range series instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
 * RangeSeries 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 "CandlestickSeries"}}{{/crossLink}}</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
 *      <li>{{#crossLink "OHLCSeries"}}{{/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 RangeSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 * @extends CartesianSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 * @param {Object} config (optional) Configuration parameters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 * @submodule series-range
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
function RangeSeries()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
    RangeSeries.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
RangeSeries.NAME = "rangeSeries";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
RangeSeries.ATTRS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
     * Read-only attribute indicating the type of series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
     * @attribute type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
     * @default range
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    type: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        value: "range"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
     * Values to be used for open, high, low and close keys.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
     * @attribute ohlc
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
    ohlckeys: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        valueFn: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
            return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
                open: "open",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
                high: "high",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
                low: "low",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
                close: "close"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        }
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
Y.extend(RangeSeries, Y.CartesianSeries, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
     * Returns the width for each marker base on the width of the series
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
     * and the length of the dataProvider.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
     * @method calculateMarkerWidth
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
     * @param {Number} width The width, in pixels of the series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
     * @param {Number} count The length of the datProvider.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
    _calculateMarkerWidth: function(width, count, spacing)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
        var val = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        while(val < 3 && spacing > -1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            spacing = spacing - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            val = Math.round(width/count - spacing);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            if(val % 2 === 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
                val = val - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
        return Math.max(1, val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
     * Draws the series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
     * @method drawSeries
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    drawSeries: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
        var xcoords = this.get("xcoords"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            ycoords = this.get("ycoords"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
            styles = this.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
            padding = styles.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            len = xcoords.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            dataWidth = this.get("width") - (padding.left + padding.right),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
            keys = this.get("ohlckeys"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            opencoords = ycoords[keys.open],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
            highcoords = ycoords[keys.high],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            lowcoords = ycoords[keys.low],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
            closecoords = ycoords[keys.close],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
            width = this._calculateMarkerWidth(dataWidth, len, styles.spacing),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
            halfwidth = width/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
        this._drawMarkers(xcoords, opencoords, highcoords, lowcoords, closecoords, len, width, halfwidth, styles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
     * Gets the default value for the `styles` attribute. Overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
     * base implementation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
     * @method _getDefaultStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
    _getDefaultStyles: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
        var styles = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
            spacing: 3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        return this._mergeStyles(styles, RangeSeries.superclass._getDefaultStyles());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
Y.RangeSeries = RangeSeries;
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
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
}, '@VERSION@', {"requires": ["series-cartesian"]});