src/cm/media/js/lib/yui/yui_3.10.3/build/series-plot-util/series-plot-util-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('series-plot-util', 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 plots in a series.
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 series-plot-util
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
var Y_Lang = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
    _getClassName = Y.ClassNameManager.getClassName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    SERIES_MARKER = _getClassName("seriesmarker");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 * Utility class used for drawing markers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 * @class Plots
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
 * @submodule series-plot-util
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
function Plots(cfg)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        markers: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
            getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
                return this._markers;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
Plots.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
     * Storage for default marker styles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
     * @property _plotDefaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    _plotDefaults: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
     * Draws the markers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
     * @method drawPlots
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    drawPlots: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        if(!this.get("xcoords") || this.get("xcoords").length < 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
			return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        var isNumber = Y_Lang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
            style = Y.clone(this.get("styles").marker),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            w = style.width,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
            h = style.height,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
            xcoords = this.get("xcoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
            ycoords = this.get("ycoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
            len = xcoords.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            top = ycoords[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
            left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            marker,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            offsetWidth = w/2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
            offsetHeight = h/2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
            xvalues,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
            yvalues,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            fillColors = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
            borderColors = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
            graphOrder = this.get("graphOrder"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
            groupMarkers = this.get("groupMarkers");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        if(groupMarkers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
            xvalues = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
            yvalues = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
            for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
                xvalues.push(parseFloat(xcoords[i] - offsetWidth));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
                yvalues.push(parseFloat(ycoords[i] - offsetHeight));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            this._createGroupMarker({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                xvalues: xvalues,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                yvalues: yvalues,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                fill: style.fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                border: style.border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                dimensions: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                    width: w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
                    height: h
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
                graphOrder: graphOrder,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
                shape: style.shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        if(Y_Lang.isArray(style.fill.color))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
            fillColors = style.fill.color.concat();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        if(Y_Lang.isArray(style.border.color))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
            borderColors = style.border.color.concat();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        this._createMarkerCache();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            top = parseFloat(ycoords[i] - offsetHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            left = parseFloat(xcoords[i] - offsetWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            if(!isNumber(left) || !isNumber(top))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
                this._markers.push(null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
                continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            if(fillColors)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                style.fill.color = fillColors[i % fillColors.length];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            if(borderColors)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                style.border.color = borderColors[i % borderColors.length];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            style.x = left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            style.y = top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            marker = this.getMarker(style, graphOrder, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
        this._clearMarkerCache();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
     * Pre-defined group shapes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
     * @property _groupShapes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    _groupShapes: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        circle: Y.CircleGroup,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
        rect: Y.RectGroup,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        ellipse: Y.EllipseGroup,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        diamond: Y.DiamondGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     * Returns the correct group shape class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
     * @method _getGroupShape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
     * @param {Shape | String} shape Indicates which shape class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
     * @return Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    _getGroupShape: function(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        if(Y_Lang.isString(shape))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            shape = this._groupShapes[shape];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        return shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
     * Gets the default values for series that use the utility. This method is used by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
     * the class' `styles` attribute's getter to get build default values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
     * @method _getPlotDefaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    _getPlotDefaults: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        var defs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
            fill:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
                type: "solid",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
                alpha: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
                colors:null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
                alphas: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
                ratios: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
            border:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
                weight: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
                alpha: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
            width: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
            height: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
            shape: "circle"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        return defs;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
     * Collection of markers to be used in the series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
     * @property _markers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
     * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    _markers: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
     * Collection of markers to be re-used on a series redraw.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
     * @property _markerCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
     * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    _markerCache: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
     * Gets and styles a marker. If there is a marker in cache, it will use it. Otherwise
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
     * it will create one.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
     * @method getMarker
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
     * @param {Object} styles Hash of style properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
     * @param {Number} order Order of the series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
     * @param {Number} index Index within the series associated with the marker.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
     * @return Shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    getMarker: function(styles, order, index)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
        var marker,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
            border = styles.border;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
        styles.id = this._getChart().get("id") + "_" + order + "_" + index;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        //fix name differences between graphic layer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
        border.opacity = border.alpha;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        styles.stroke = border;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        styles.fill.opacity = styles.fill.alpha;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        if(this._markerCache.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            while(!marker)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                if(this._markerCache.length < 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
                    marker = this._createMarker(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
                marker = this._markerCache.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            marker.set(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            marker = this._createMarker(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        this._markers.push(marker);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
        return marker;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
     * Creates a shape to be used as a marker.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
     * @method _createMarker
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
     * @param {Object} styles Hash of style properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
     * @return Shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    _createMarker: function(styles)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
        var graphic = this.get("graphic"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            marker,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
            cfg = Y.clone(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        cfg.type = cfg.shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        marker = graphic.addShape(cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        marker.addClass(SERIES_MARKER);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        return marker;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
     * Creates a cache of markers for reuse.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
     * @method _createMarkerCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    _createMarkerCache: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
        if(this._groupMarker)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            this._groupMarker.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            this._groupMarker = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        if(this._markers && this._markers.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            this._markerCache = this._markers.concat();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            this._markerCache = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        this._markers = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
     * Draws a series of markers in a single shape instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
     * @method _createGroupMarkers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
     * @param {Object} styles Set of configuration properties used to create the markers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
    _createGroupMarker: function(styles)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        var marker,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
            markers = this.get("markers"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            border = styles.border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            graphic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
            cfg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
            shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        if(markers && markers.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            while(markers.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
                marker = markers.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
                marker.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
            this.set("markers", []);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        //fix name differences between graphic layer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        border.opacity = border.alpha;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        cfg = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
            id: this._getChart().get("id") + "_" + styles.graphOrder,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            stroke: border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            fill: styles.fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            dimensions: styles.dimensions,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            xvalues: styles.xvalues,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            yvalues: styles.yvalues
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        cfg.fill.opacity = styles.fill.alpha;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        shape = this._getGroupShape(styles.shape);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        if(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            cfg.type = shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        if(styles.hasOwnProperty("radius") && !isNaN(styles.radius))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
            cfg.dimensions.radius = styles.radius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        if(this._groupMarker)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            this._groupMarker.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
        graphic = this.get("graphic");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        this._groupMarker = graphic.addShape(cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        graphic._redraw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
     * Toggles visibility
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
     * @method _toggleVisible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
     * @param {Boolean} visible indicates visibilitye
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    _toggleVisible: function(visible)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
        var marker,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
            markers = this.get("markers"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
            len;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
        if(markers)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
            len = markers.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
            for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                marker = markers[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                if(marker)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
                    marker.set("visible", visible);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
     * Removes unused markers from the marker cache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
     * @method _clearMarkerCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
    _clearMarkerCache: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
        var marker;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        while(this._markerCache.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            marker = this._markerCache.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
            if(marker)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
                marker.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
     * Resizes and positions markers based on a mouse interaction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
     * @method updateMarkerState
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
     * @param {String} type state of the marker
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
     * @param {Number} i index of the marker
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
    updateMarkerState: function(type, i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        if(this._markers && this._markers[i])
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
            var w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                h,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                styles = Y.clone(this.get("styles").marker),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                state = this._getState(type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                xcoords = this.get("xcoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                ycoords = this.get("ycoords"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                marker = this._markers[i],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                markerStyles = state === "off" || !styles[state] ? styles : styles[state];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                markerStyles.fill.color = this._getItemColor(markerStyles.fill.color, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                markerStyles.border.color = this._getItemColor(markerStyles.border.color, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                markerStyles.stroke = markerStyles.border;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
                marker.set(markerStyles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                w = markerStyles.width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                h = markerStyles.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                marker.set("x", (xcoords[i] - w/2));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                marker.set("y",  (ycoords[i] - h/2));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                marker.set("visible", this.get("visible"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
     * Parses a color from an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
     * @method _getItemColor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
     * @param {Array} val collection of colors
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
     * @param {Number} i index of the item
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
     * @return String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
    _getItemColor: function(val, i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
        if(Y_Lang.isArray(val))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
            return val[i % val.length];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
     * Method used by `styles` setter. Overrides base implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
     * @method _setStyles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
     * @param {Object} newStyles Hash of properties to update.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
    _setStyles: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
        val = this._parseMarkerStyles(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
        return Y.Renderer.prototype._setStyles.apply(this, [val]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
     * Combines new styles with existing styles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
     * @method _parseMarkerStyles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
     * @param {Object} Object containing style properties for the marker.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
    _parseMarkerStyles: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        if(val.marker)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
            var defs = this._getPlotDefaults();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
            val.marker = this._mergeStyles(val.marker, defs);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
            if(val.marker.over)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
                val.marker.over = this._mergeStyles(val.marker.over, val.marker);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
            if(val.marker.down)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
                val.marker.down = this._mergeStyles(val.marker.down, val.marker);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
        return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
     * Returns marker state based on event type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
     * @method _getState
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
     * @param {String} type event type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
     * @return String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
    _getState: function(type)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
        var state;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        switch(type)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
            case "mouseout" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                state = "off";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
            case "mouseover" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                state = "over";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
            case "mouseup" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                state = "over";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
            case "mousedown" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                state = "down";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        return state;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
     * @property _statSyles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
    _stateSyles: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
     * Draws the series.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
     * @method drawSeries
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    drawSeries: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        this.drawPlots();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
     * Gets the default value for the `styles` attribute. Overrides
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
     * base implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
     * @method _getDefaultStyles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    _getDefaultStyles: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        var styles = this._mergeStyles({marker:this._getPlotDefaults()}, this.constructor.superclass._getDefaultStyles());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
        return styles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
Y.augment(Plots, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
Y.Plots = Plots;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
}, '3.10.3');