src/cm/media/js/lib/yui/yui_3.10.3/build/charts-legend/charts-legend.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('charts-legend', 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
 * Adds legend functionality to charts.
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 charts-legend
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 DOCUMENT = Y.config.doc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
TOP = "top",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
RIGHT = "right",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
BOTTOM = "bottom",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
LEFT = "left",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
EXTERNAL = "external",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
HORIZONTAL = "horizontal",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
VERTICAL = "vertical",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
WIDTH = "width",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
HEIGHT = "height",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
POSITION = "position",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
_X = "x",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
_Y = "y",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
PX = "px",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
PieChartLegend,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
LEGEND = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        var legend = this.get("legend");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        if(legend)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
            legend.destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        if(val instanceof Y.ChartLegend)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
            legend = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
            legend.set("chart", this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
            val.chart = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
            if(!val.hasOwnProperty("render"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
                val.render = this.get("contentBox");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
                val.includeInChartLayout = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
            legend = new Y.ChartLegend(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        return legend;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
 * Contains methods for displaying items horizontally in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
 * @module charts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
 * @submodule charts-legend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
 * @class HorizontalLegendLayout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
HorizontalLegendLayout = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     * Displays items horizontally in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
     * @method _positionLegendItems
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * @param {Array} items Array of items to display in the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     * @param {Number} maxWidth The width of the largest item in the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * @param {Number} maxHeight The height of the largest item in the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     * @param {Number} totalWidth The total width of all items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     * @param {Number} totalHeight The total height of all items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     * @param {Number} padding The left, top, right and bottom padding properties for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * @param {Number} horizontalGap The horizontal distance between items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * @param {Number} verticalGap The vertical distance between items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * @param {String} hAlign The horizontal alignment of the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    _positionLegendItems: function(items, maxWidth, maxHeight, totalWidth, totalHeight, padding, horizontalGap, verticalGap, hAlign)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        var i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
            rowIterator = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
            item,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
            node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            itemWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
            itemHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            width = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
            rows,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            rowsLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
            row,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
            totalWidthArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            legendWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
            topHeight = padding.top - verticalGap,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            limit = width - (padding.left + padding.right),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
            top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
            right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        HorizontalLegendLayout._setRowArrays(items, limit, horizontalGap);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        rows = HorizontalLegendLayout.rowArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        totalWidthArray = HorizontalLegendLayout.totalWidthArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        rowsLen = rows.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        for(; rowIterator < rowsLen; ++ rowIterator)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
            topHeight += verticalGap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            row = rows[rowIterator];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
            len = row.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            legendWidth =  HorizontalLegendLayout.getStartPoint(width, totalWidthArray[rowIterator], hAlign, padding);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
            for(i = 0; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                item = row[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
                node = item.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
                itemWidth = item.width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
                itemHeight = item.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
                item.x = legendWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
                item.y = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
                left = !isNaN(left) ? Math.min(left, legendWidth) : legendWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
                top = !isNaN(top) ? Math.min(top, topHeight) : topHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
                right = !isNaN(right) ? Math.max(legendWidth + itemWidth, right) : legendWidth + itemWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
                bottom = !isNaN(bottom) ? Math.max(topHeight + itemHeight, bottom) : topHeight + itemHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                node.setStyle("left", legendWidth + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
                node.setStyle("top", topHeight + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
                legendWidth += itemWidth + horizontalGap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
            topHeight += item.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        this._contentRect = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            left: left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            top: top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            right: right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            bottom: bottom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        if(this.get("includeInChartLayout"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            this.set("height", topHeight + padding.bottom);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
        }
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     * Creates row and total width arrays used for displaying multiple rows of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
     * legend items based on the items, available width and horizontalGap for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
     * @method _setRowArrays
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
     * @param {Array} items Array of legend items to display in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
     * @param {Number} limit Total available width for displaying items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
     * @param {Number} horizontalGap Horizontal distance between items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
    _setRowArrays: function(items, limit, horizontalGap)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        var item = items[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            rowArray = [[item]],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            i = 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            rowIterator = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            len = items.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            totalWidth = item.width,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            itemWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            totalWidthArray = [[totalWidth]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            item = items[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
            itemWidth = item.width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
            if((totalWidth + horizontalGap + itemWidth) <= limit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
                totalWidth += horizontalGap + itemWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
                rowArray[rowIterator].push(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                totalWidth = horizontalGap + itemWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                if(rowArray[rowIterator])
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
                    rowIterator += 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
                rowArray[rowIterator] = [item];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            totalWidthArray[rowIterator] = totalWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        HorizontalLegendLayout.rowArray = rowArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        HorizontalLegendLayout.totalWidthArray = totalWidthArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
     * Returns the starting x-coordinate for a row of legend items.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
     * @method getStartPoint
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
     * @param {Number} w Width of the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
     * @param {Number} totalWidth Total width of all labels in the row.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
     * @param {String} align Horizontal alignment of items for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
     * @param {Object} padding Object contain left, top, right and bottom padding properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    getStartPoint: function(w, totalWidth, align, padding)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        var startPoint;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        switch(align)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            case LEFT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
                startPoint = padding.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            case "center" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
                startPoint = (w - totalWidth) * 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
            case RIGHT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
                startPoint = w - totalWidth - padding.right;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        return startPoint;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
 * Contains methods for displaying items vertically in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
 * @module charts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
 * @submodule charts-legend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
 * @class VerticalLegendLayout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
VerticalLegendLayout = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
     * Displays items vertically in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
     * @method _positionLegendItems
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
     * @param {Array} items Array of items to display in the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
     * @param {Number} maxWidth The width of the largest item in the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
     * @param {Number} maxHeight The height of the largest item in the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
     * @param {Number} totalWidth The total width of all items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
     * @param {Number} totalHeight The total height of all items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     * @param {Number} padding The left, top, right and bottom padding properties for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
     * @param {Number} horizontalGap The horizontal distance between items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
     * @param {Number} verticalGap The vertical distance between items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
     * @param {String} vAlign The vertical alignment of the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
    _positionLegendItems: function(items, maxWidth, maxHeight, totalWidth, totalHeight, padding, horizontalGap, verticalGap, vAlign)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        var i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            columnIterator = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            item,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            itemHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            itemWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
            height = this.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            columns,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
            columnsLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
            column,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            totalHeightArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            legendHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            leftWidth = padding.left - horizontalGap,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            legendWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            limit = height - (padding.top + padding.bottom),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
            right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
            bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        VerticalLegendLayout._setColumnArrays(items, limit, verticalGap);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        columns = VerticalLegendLayout.columnArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        totalHeightArray = VerticalLegendLayout.totalHeightArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
        columnsLen = columns.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        for(; columnIterator < columnsLen; ++ columnIterator)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            leftWidth += horizontalGap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            column = columns[columnIterator];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            len = column.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            legendHeight =  VerticalLegendLayout.getStartPoint(height, totalHeightArray[columnIterator], vAlign, padding);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
            legendWidth = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
            for(i = 0; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
                item = column[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                node = item.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
                itemHeight = item.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
                itemWidth = item.width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
                item.y = legendHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
                item.x = leftWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
                left = !isNaN(left) ? Math.min(left, leftWidth) : leftWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
                top = !isNaN(top) ? Math.min(top, legendHeight) : legendHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
                right = !isNaN(right) ? Math.max(leftWidth + itemWidth, right) : leftWidth + itemWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
                bottom = !isNaN(bottom) ? Math.max(legendHeight + itemHeight, bottom) : legendHeight + itemHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
                node.setStyle("left", leftWidth + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
                node.setStyle("top", legendHeight + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
                legendHeight += itemHeight + verticalGap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
                legendWidth = Math.max(legendWidth, item.width);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            leftWidth += legendWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        this._contentRect = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            left: left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            top: top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            right: right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
            bottom: bottom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
        if(this.get("includeInChartLayout"))
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.set("width", leftWidth + padding.right);
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
     * Creates column and total height arrays used for displaying multiple columns of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
     * legend items based on the items, available height and verticalGap for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
     * @method _setColumnArrays
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
     * @param {Array} items Array of legend items to display in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
     * @param {Number} limit Total available height for displaying items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
     * @param {Number} verticalGap Vertical distance between items in a legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
    _setColumnArrays: function(items, limit, verticalGap)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
        var item = items[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
            columnArray = [[item]],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
            i = 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
            columnIterator = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            len = items.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            totalHeight = item.height,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            itemHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            totalHeightArray = [[totalHeight]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            item = items[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
            itemHeight = item.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
            if((totalHeight + verticalGap + itemHeight) <= limit)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
                totalHeight += verticalGap + itemHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
                columnArray[columnIterator].push(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
                totalHeight = verticalGap + itemHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
                if(columnArray[columnIterator])
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                    columnIterator += 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                columnArray[columnIterator] = [item];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            totalHeightArray[columnIterator] = totalHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        VerticalLegendLayout.columnArray = columnArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        VerticalLegendLayout.totalHeightArray = totalHeightArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
     * Returns the starting y-coordinate for a column of legend items.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
     * @method getStartPoint
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
     * @param {Number} h Height of the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
     * @param {Number} totalHeight Total height of all labels in the column.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
     * @param {String} align Vertical alignment of items for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
     * @param {Object} padding Object contain left, top, right and bottom padding properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    getStartPoint: function(h, totalHeight, align, padding)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        var startPoint;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
        switch(align)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
            case TOP :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
                startPoint = padding.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
            case "middle" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                startPoint = (h - totalHeight) * 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
            case BOTTOM :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                startPoint = h - totalHeight - padding.bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
        return startPoint;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
CartesianChartLegend = Y.Base.create("cartesianChartLegend", Y.CartesianChart, [], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
     * Redraws and position all the components of the chart instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
     * @method _redraw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
    _redraw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        if(this._drawing)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            this._callLater = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        this._drawing = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
        this._callLater = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
        var w = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
            h = this.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
            layoutBoxDimensions = this._getLayoutBoxDimensions(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            leftPaneWidth = layoutBoxDimensions.left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            rightPaneWidth = layoutBoxDimensions.right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
            topPaneHeight = layoutBoxDimensions.top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
            bottomPaneHeight = layoutBoxDimensions.bottom,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
            leftAxesCollection = this.get("leftAxesCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
            rightAxesCollection = this.get("rightAxesCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
            topAxesCollection = this.get("topAxesCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            bottomAxesCollection = this.get("bottomAxesCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
            l,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            axis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            graphOverflow = "visible",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            graph = this.get("graph"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
            topOverflow,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            bottomOverflow,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
            leftOverflow,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
            rightOverflow,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
            graphWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            graphHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            graphX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
            graphY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
            allowContentOverflow = this.get("allowContentOverflow"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
            diff,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
            rightAxesXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
            leftAxesXCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
            topAxesYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
            bottomAxesYCoords,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
            legend = this.get("legend"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
            graphRect = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        if(leftAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
            leftAxesXCoords = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            l = leftAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
            for(i = l - 1; i > -1; --i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
                leftAxesXCoords.unshift(leftPaneWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
                leftPaneWidth += leftAxesCollection[i].get("width");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
        if(rightAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            rightAxesXCoords = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            l = rightAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
            for(i = l - 1; i > -1; --i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
                rightPaneWidth += rightAxesCollection[i].get("width");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
                rightAxesXCoords.unshift(w - rightPaneWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        if(topAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
            topAxesYCoords = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            l = topAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
            for(i = l - 1; i > -1; --i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                topAxesYCoords.unshift(topPaneHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                topPaneHeight += topAxesCollection[i].get("height");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        if(bottomAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
            bottomAxesYCoords = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
            l = bottomAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            for(i = l - 1; i > -1; --i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                bottomPaneHeight += bottomAxesCollection[i].get("height");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                bottomAxesYCoords.unshift(h - bottomPaneHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
        graphWidth = w - (leftPaneWidth + rightPaneWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        graphHeight = h - (bottomPaneHeight + topPaneHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
        graphRect.left = leftPaneWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        graphRect.top = topPaneHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
        graphRect.bottom = h - bottomPaneHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        graphRect.right = w - rightPaneWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
        if(!allowContentOverflow)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
            topOverflow = this._getTopOverflow(leftAxesCollection, rightAxesCollection);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
            bottomOverflow = this._getBottomOverflow(leftAxesCollection, rightAxesCollection);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
            leftOverflow = this._getLeftOverflow(bottomAxesCollection, topAxesCollection);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
            rightOverflow = this._getRightOverflow(bottomAxesCollection, topAxesCollection);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
            diff = topOverflow - topPaneHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            if(diff > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
                graphRect.top = topOverflow;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
                if(topAxesYCoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
                    i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
                    l = topAxesYCoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
                    for(; i < l; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
                        topAxesYCoords[i] += diff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            diff = bottomOverflow - bottomPaneHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
            if(diff > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                graphRect.bottom = h - bottomOverflow;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                if(bottomAxesYCoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                    i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                    l = bottomAxesYCoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                    for(; i < l; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                        bottomAxesYCoords[i] -= diff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            diff = leftOverflow - leftPaneWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
            if(diff > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                graphRect.left = leftOverflow;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                if(leftAxesXCoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
                    i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
                    l = leftAxesXCoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
                    for(; i < l; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                        leftAxesXCoords[i] += diff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
            diff = rightOverflow - rightPaneWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
            if(diff > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
                graphRect.right = w - rightOverflow;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
                if(rightAxesXCoords)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
                    i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
                    l = rightAxesXCoords.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
                    for(; i < l; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                        rightAxesXCoords[i] -= diff;
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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
        graphWidth = graphRect.right - graphRect.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
        graphHeight = graphRect.bottom - graphRect.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
        graphX = graphRect.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
        graphY = graphRect.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
        if(legend)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
            if(legend.get("includeInChartLayout"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                switch(legend.get("position"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                    case "left" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                        legend.set("y", graphY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                        legend.set("height", graphHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                    case "top" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                        legend.set("x", graphX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
                        legend.set("width", graphWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
                    case "bottom" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
                        legend.set("x", graphX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
                        legend.set("width", graphWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
                    case "right" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
                        legend.set("y", graphY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
                        legend.set("height", graphHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
        if(topAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
            l = topAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
            for(; i < l; i++)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                axis = topAxesCollection[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                if(axis.get("width") !== graphWidth)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
                    axis.set("width", graphWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
                axis.get("boundingBox").setStyle("left", graphX + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                axis.get("boundingBox").setStyle("top", topAxesYCoords[i] + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
            if(axis._hasDataOverflow())
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                graphOverflow = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
        if(bottomAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
            l = bottomAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
            for(; i < l; i++)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
                axis = bottomAxesCollection[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                if(axis.get("width") !== graphWidth)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
                    axis.set("width", graphWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
                axis.get("boundingBox").setStyle("left", graphX + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
                axis.get("boundingBox").setStyle("top", bottomAxesYCoords[i] + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
            if(axis._hasDataOverflow())
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
                graphOverflow = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
        if(leftAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
            l = leftAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
            for(; i < l; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
                axis = leftAxesCollection[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
                axis.get("boundingBox").setStyle("top", graphY + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
                axis.get("boundingBox").setStyle("left", leftAxesXCoords[i] + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
                if(axis.get("height") !== graphHeight)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
                    axis.set("height", graphHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
            if(axis._hasDataOverflow())
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
                graphOverflow = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        if(rightAxesCollection)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
            l = rightAxesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
            for(; i < l; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
                axis = rightAxesCollection[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
                axis.get("boundingBox").setStyle("top", graphY + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
                axis.get("boundingBox").setStyle("left", rightAxesXCoords[i] + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
                if(axis.get("height") !== graphHeight)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
                    axis.set("height", graphHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
            if(axis._hasDataOverflow())
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
                graphOverflow = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
        this._drawing = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
        if(this._callLater)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
            this._redraw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
        if(graph)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
            graph.get("boundingBox").setStyle("left", graphX + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
            graph.get("boundingBox").setStyle("top", graphY + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
            graph.set("width", graphWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
            graph.set("height", graphHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
            graph.get("boundingBox").setStyle("overflow", graphOverflow);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
        if(this._overlay)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
            this._overlay.setStyle("left", graphX + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
            this._overlay.setStyle("top", graphY + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
            this._overlay.setStyle("width", graphWidth + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
            this._overlay.setStyle("height", graphHeight + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
     * Positions the legend in a chart and returns the properties of the legend to be used in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
     * chart's layout algorithm.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
     * @method _getLayoutDimensions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
     * @return {Object} The left, top, right and bottom values for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
    _getLayoutBoxDimensions: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        var box = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
                top: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
                right: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
                bottom: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
                left: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
            legend = this.get("legend"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
            position,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
            direction,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
            dimension,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
            size,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
            w = this.get(WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
            h = this.get(HEIGHT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
            gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
        if(legend && legend.get("includeInChartLayout"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
            gap = legend.get("styles").gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
            position = legend.get(POSITION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
            if(position !== EXTERNAL)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
                direction = legend.get("direction");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
                dimension = direction === HORIZONTAL ? HEIGHT : WIDTH;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
                size = legend.get(dimension);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
                box[position] = size + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
                switch(position)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
                    case TOP :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
                        legend.set(_Y, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
                    case BOTTOM :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
                        legend.set(_Y, h - size);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
                    case RIGHT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
                        legend.set(_X, w - size);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
                    case LEFT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
                        legend.set(_X, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
        return box;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
     * Destructor implementation for the CartesianChart class. Calls destroy on all axes, series, legend (if available) and the Graph instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
     * Removes the tooltip and overlay HTML elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
     * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
    destructor: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
        var legend = this.get("legend");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
        if(legend)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
            legend.destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
        legend: LEGEND
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
Y.CartesianChart = CartesianChartLegend;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
PieChartLegend = Y.Base.create("pieChartLegend", Y.PieChart, [], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
     * Redraws the chart instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
     * @method _redraw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
    _redraw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
        if(this._drawing)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
            this._callLater = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
        this._drawing = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
        this._callLater = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
        var graph = this.get("graph"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
            w = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
            h = this.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
            graphWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
            graphHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
            legend = this.get("legend"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
            x = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
            y = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
            legendX = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
            legendY = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
            legendWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
            legendHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
            dimension,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
            gap,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
            position,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
            direction;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
        if(graph)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
            if(legend)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
                position = legend.get("position");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
                direction = legend.get("direction");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
                graphWidth = graph.get("width");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
                graphHeight = graph.get("height");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
                legendWidth = legend.get("width");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
                legendHeight = legend.get("height");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
                gap = legend.get("styles").gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
                if((direction === "vertical" && (graphWidth + legendWidth + gap !== w)) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
                    (direction === "horizontal" &&  (graphHeight + legendHeight + gap !== h)))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
                    switch(legend.get("position"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
                        case LEFT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
                            dimension = Math.min(w - (legendWidth + gap), h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
                            legendHeight = h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
                            x = legendWidth + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
                            legend.set(HEIGHT, legendHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
                        case TOP :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
                            dimension = Math.min(h - (legendHeight + gap), w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
                            legendWidth = w;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
                            y = legendHeight + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
                            legend.set(WIDTH, legendWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
                        case RIGHT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
                            dimension = Math.min(w - (legendWidth + gap), h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
                            legendHeight = h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
                            legendX = dimension + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
                            legend.set(HEIGHT, legendHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
                        case BOTTOM :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
                            dimension = Math.min(h - (legendHeight + gap), w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
                            legendWidth = w;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
                            legendY = dimension + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
                            legend.set(WIDTH, legendWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
                    graph.set(WIDTH, dimension);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
                    graph.set(HEIGHT, dimension);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
                else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
                    switch(legend.get("position"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
                        case LEFT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
                            x = legendWidth + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
                        case TOP :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
                            y = legendHeight + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
                        case RIGHT :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
                            legendX = graphWidth + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
                        case BOTTOM :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
                            legendY = graphHeight + gap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
                graph.set(_X, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
                graph.set(_Y, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
                graph.set(WIDTH, w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
                graph.set(HEIGHT, h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
        this._drawing = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
        if(this._callLater)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
            this._redraw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
        if(graph)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
            graph.set(_X, x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
            graph.set(_Y, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
        if(legend)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
            legend.set(_X, legendX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            legend.set(_Y, legendY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
         * The legend for the chart.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
         * @attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
         * @type Legend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
        legend: LEGEND
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
Y.PieChart = PieChartLegend;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
 * ChartLegend provides a legend for a chart.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
 * @class ChartLegend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
 * @module charts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
 * @submodule charts-legend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
 * @extends Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
Y.ChartLegend = Y.Base.create("chartlegend", Y.Widget, [Y.Renderer], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
     * Initializes the chart.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
    initializer: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
        this._items = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
     * @method renderUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
    renderUI: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
        var bb = this.get("boundingBox"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
            cb = this.get("contentBox"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
            styles = this.get("styles").background,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
            background = new Y.Rect({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
                graphic: cb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
                fill: styles.fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
                stroke: styles.border
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
        bb.setStyle("display", "block");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
        bb.setStyle("position", "absolute");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
        this.set("background", background);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
     * @method bindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
    bindUI: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
        this.get("chart").after("seriesCollectionChange", Y.bind(this._updateHandler, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
        this.get("chart").after("stylesChange", Y.bind(this._updateHandler, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
        this.after("stylesChange", this._updateHandler);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
        this.after("positionChange", this._positionChangeHandler);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
        this.after("widthChange", this._handleSizeChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
        this.after("heightChange", this._handleSizeChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
     * @method syncUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
    syncUI: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
        var w = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
            h = this.get("height");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
        if(isFinite(w) && isFinite(h) && w > 0 && h > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
            this._drawLegend();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
     * Handles changes to legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
     * @method _updateHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
     * @param {Object} e Event object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
    _updateHandler: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
        if(this.get("rendered"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
            this._drawLegend();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
     * Handles position changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
     * @method _positionChangeHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
     * @param {Object} e Event object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
    _positionChangeHandler: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
        var chart = this.get("chart"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
            parentNode = this._parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
        if(parentNode && ((chart && this.get("includeInChartLayout"))))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
            this.fire("legendRendered");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
        else if(this.get("rendered"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
            this._drawLegend();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
     * Updates the legend when the size changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
     * @method _handleSizeChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
     * @param {Object} e Event object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
    _handleSizeChange: function(e)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
        var attrName = e.attrName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
            pos = this.get(POSITION),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
            vert = pos === LEFT || pos === RIGHT,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
            hor = pos === BOTTOM || pos === TOP;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
        if((hor && attrName === WIDTH) || (vert && attrName === HEIGHT))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
            this._drawLegend();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
     * Draws the legend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
     * @method _drawLegend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
    _drawLegend: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
        if(this._drawing)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
            this._callLater = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
        this._drawing = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
        this._callLater = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
        if(this.get("includeInChartLayout"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
            this.get("chart")._itemRenderQueue.unshift(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
        var chart = this.get("chart"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
            node = this.get("contentBox"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
            seriesCollection = chart.get("seriesCollection"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
            series,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
            styles = this.get("styles"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
            padding = styles.padding,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
            itemStyles = styles.item,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
            seriesStyles,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
            hSpacing = itemStyles.hSpacing,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
            vSpacing = itemStyles.vSpacing,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
            direction = this.get("direction"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
            align = direction === "vertical" ? styles.vAlign : styles.hAlign,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
            marker = styles.marker,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
            labelStyles = itemStyles.label,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
            displayName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
            layout = this._layout[direction],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
            isArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
            legendShape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
            shape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
            shapeClass,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
            item,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
            fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
            border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
            fillColors,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
            borderColors,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
            borderWeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
            items = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
            markerWidth = marker.width,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
            markerHeight = marker.height,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
            totalWidth = 0 - hSpacing,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
            totalHeight = 0 - vSpacing,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
            maxWidth = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
            maxHeight = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
            itemWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
            itemHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
        if(marker && marker.shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
            legendShape = marker.shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
        this._destroyLegendItems();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
        if(chart instanceof Y.PieChart)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
            series = seriesCollection[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
            displayName = series.get("categoryAxis").getDataByKey(series.get("categoryKey"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
            seriesStyles = series.get("styles").marker;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
            fillColors = seriesStyles.fill.colors;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
            borderColors = seriesStyles.border.colors;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
            borderWeight = seriesStyles.border.weight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
            len = displayName.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
            shape = legendShape || Y.Circle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
            isArray = Y.Lang.isArray(shape);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
            for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
                shape = isArray ? shape[i] : shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
                fill = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
                    color: fillColors[i]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
                border = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
                    colors: borderColors[i],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
                    weight: borderWeight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
                displayName = chart.getSeriesItems(series, i).category.value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
                item = this._getLegendItem(node, this._getShapeClass(shape), fill, border, labelStyles, markerWidth, markerHeight, displayName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
                itemWidth = item.width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
                itemHeight = item.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
                maxWidth = Math.max(maxWidth, itemWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
                maxHeight = Math.max(maxHeight, itemHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
                totalWidth += itemWidth + hSpacing;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
                totalHeight += itemHeight + vSpacing;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
                items.push(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
            i = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
            len = seriesCollection.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
            for(; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
                series = seriesCollection[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
                seriesStyles = this._getStylesBySeriesType(series, shape);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
                if(!legendShape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
                    shape = seriesStyles.shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
                    if(!shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
                        shape = Y.Circle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
                shapeClass = Y.Lang.isArray(shape) ? shape[i] : shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
                item = this._getLegendItem(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
                    node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
                    this._getShapeClass(shape),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
                    seriesStyles.fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
                    seriesStyles.border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
                    labelStyles,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
                    markerWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
                    markerHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
                    series.get("valueDisplayName")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
                );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
                itemWidth = item.width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
                itemHeight = item.height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
                maxWidth = Math.max(maxWidth, itemWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
                maxHeight = Math.max(maxHeight, itemHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
                totalWidth += itemWidth + hSpacing;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
                totalHeight += itemHeight + vSpacing;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
                items.push(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
        this._drawing = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
        if(this._callLater)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
            this._drawLegend();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
            layout._positionLegendItems.apply(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
                this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
                [items, maxWidth, maxHeight, totalWidth, totalHeight, padding, hSpacing, vSpacing, align]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
            );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
            this._updateBackground(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
            this.fire("legendRendered");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
     * Updates the background for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
     * @method _updateBackground
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
     * @param {Object} styles Reference to the legend's styles attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
    _updateBackground: function(styles)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
        var backgroundStyles = styles.background,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
            contentRect = this._contentRect,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
            padding = styles.padding,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
            x = contentRect.left - padding.left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
            y = contentRect.top - padding.top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
            w = contentRect.right - x + padding.right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
            h = contentRect.bottom - y + padding.bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
        this.get("background").set({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
            fill: backgroundStyles.fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
            stroke: backgroundStyles.border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
            width: w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
            height: h,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
            x: x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
            y: y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
     * Retrieves the marker styles based on the type of series. For series that contain a marker, the marker styles are returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
     * @method _getStylesBySeriesType
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
     * @param {CartesianSeries | PieSeries} The series in which the style properties will be received.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
     * @return Object An object containing fill, border and shape information.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
    _getStylesBySeriesType: function(series)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
        var styles = series.get("styles"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
            color;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
        if(series instanceof Y.LineSeries || series instanceof Y.StackedLineSeries)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
            styles = series.get("styles").line;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
            color = styles.color || series._getDefaultColor(series.get("graphOrder"), "line");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
            return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
                border: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
                    weight: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
                    color: color
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
                fill: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
                    color: color
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
        else if(series instanceof Y.AreaSeries || series instanceof Y.StackedAreaSeries)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
            styles = series.get("styles").area;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
            color = styles.color || series._getDefaultColor(series.get("graphOrder"), "slice");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
            return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
                border: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
                    weight: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
                    color: color
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
                fill: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
                    color: color
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
            styles = series.get("styles").marker;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
            return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
                fill: styles.fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
                border: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
                    weight: styles.border.weight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
                    color: styles.border.color,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
                    shape: styles.shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
                shape: styles.shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
     * Returns a legend item consisting of the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
     *    <dt>node</dt><dd>The `Node` containing the legend item elements.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
     *      <dt>shape</dt><dd>The `Shape` element for the legend item.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
     *      <dt>textNode</dt><dd>The `Node` containing the text></dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
     *      <dt>text</dt><dd></dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
     * @method _getLegendItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
     * @param {Node} shapeProps Reference to the `node` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
     * @param {String | Class} shapeClass The type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
     * @param {Object} fill Properties for the shape's fill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
     * @param {Object} border Properties for the shape's border
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
     * @param {String} text String to be rendered as the legend's text
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
     * @param {Number} width Total width of the legend item
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
     * @param {Number} height Total height of the legend item
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
     * @param {HTML | String} text Text for the legendItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
    _getLegendItem: function(node, shapeClass, fill, border, labelStyles, w, h, text)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
        var containerNode = Y.one(DOCUMENT.createElement("div")),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
            textField = Y.one(DOCUMENT.createElement("span")),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
            shape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
            dimension,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
            padding,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
            left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
            item,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
            ShapeClass = shapeClass;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
        containerNode.setStyle(POSITION, "absolute");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
        textField.setStyle(POSITION, "absolute");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
        textField.setStyles(labelStyles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
        textField.appendChild(DOCUMENT.createTextNode(text));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
        containerNode.appendChild(textField);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
        node.appendChild(containerNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
        dimension = textField.get("offsetHeight");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
        padding = dimension - h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
        left = w + padding + 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
        textField.setStyle("left", left + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
        containerNode.setStyle("height", dimension + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
        containerNode.setStyle("width", (left + textField.get("offsetWidth")) + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
        shape = new ShapeClass({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
            fill: fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
            stroke: border,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
            width: w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
            height: h,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
            x: padding * 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
            y: padding * 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
            w: w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
            h: h,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
            graphic: containerNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
        textField.setStyle("left", dimension + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
        item = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
            node: containerNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
            width: containerNode.get("offsetWidth"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
            height: containerNode.get("offsetHeight"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
            shape: shape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
            textNode: textField,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
            text: text
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
        this._items.push(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
        return item;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
     * Evaluates and returns correct class for drawing a shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
     * @method _getShapeClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
     * @return Shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
    _getShapeClass: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
        var graphic = this.get("background").get("graphic");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
        return graphic._getShapeClass.apply(graphic, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
     * Returns the default hash for the `styles` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
     * @method _getDefaultStyles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
    _getDefaultStyles: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
        var styles = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
            padding: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
                top: 8,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
                right: 8,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
                bottom: 8,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
                left: 9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
            gap: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
            hAlign: "center",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
            vAlign: "top",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
            marker: this._getPlotDefaults(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
            item: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
                hSpacing: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
                vSpacing: 5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
                label: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
                    color:"#808080",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
                    fontSize:"85%",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
                    whiteSpace: "nowrap"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
            background: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
                shape: "rect",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
                fill:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
                    color:"#faf9f2"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
                border: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
                    color:"#dad8c9",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
                    weight: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
        return styles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
     * 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
  1357
     * the class' `styles` attribute's getter to get build default values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
     * @method _getPlotDefaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
     * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
    _getPlotDefaults: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
        var defs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
            width: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
            height: 10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
        return defs;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
     * Destroys legend items.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
     * @method _destroyLegendItems
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
    _destroyLegendItems: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
        var item;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
        if(this._items)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
            while(this._items.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
                item = this._items.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
                item.shape.get("graphic").destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
                item.node.empty();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
                item.node.destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
                item.node = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
                item = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
        this._items = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
     * Maps layout classes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
     * @property _layout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
    _layout: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
        vertical: VerticalLegendLayout,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
        horizontal: HorizontalLegendLayout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
     * Destructor implementation ChartLegend class. Removes all items and the Graphic instance from the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
     * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
    destructor: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
        var background = this.get("background"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
            backgroundGraphic;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
        this._destroyLegendItems();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
        if(background)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
            backgroundGraphic = background.get("graphic");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
            if(backgroundGraphic)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
                backgroundGraphic.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                background.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
         * Indicates whether the chart's contentBox is the parentNode for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
         * @attribute includeInChartLayout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
         * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
        includeInChartLayout: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
         * Reference to the `Chart` instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
         * @attribute chart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
         * @type Chart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
        chart: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
            setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
                this.after("legendRendered", Y.bind(val._itemRendered, val));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
                return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
         * Indicates the direction in relation of the legend's layout. The `direction` of the legend is determined by its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
         * `position` value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
         * @attribute direction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
        direction: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
            value: "vertical"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
         * Indicates the position and direction of the legend. Possible values are `left`, `top`, `right` and `bottom`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
         * Values of `left` and `right` values have a `direction` of `vertical`. Values of `top` and `bottom` values have
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
         * a `direction` of `horizontal`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
         * @attribute position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
        position: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
            lazyAdd: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
            value: "right",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
            setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
                if(val === TOP || val === BOTTOM)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
                    this.set("direction", HORIZONTAL);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
                else if(val === LEFT || val === RIGHT)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
                    this.set("direction", VERTICAL);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
                return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
         * The width of the legend. Depending on the implementation of the ChartLegend, this value is `readOnly`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
         * By default, the legend is included in the layout of the `Chart` that it references. Under this circumstance,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
         * `width` is always `readOnly`. When the legend is rendered in its own dom element, the `readOnly` status is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
         * determined by the direction of the legend. If the `position` is `left` or `right` or the `direction` is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
         * `vertical`, width is `readOnly`. If the position is `top` or `bottom` or the `direction` is `horizontal`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
         * width can be explicitly set. If width is not explicitly set, the width will be determined by the width of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
         * legend's parent element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
         * @attribute width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
        width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
            getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
                var chart = this.get("chart"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
                    parentNode = this._parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
                if(parentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
                    if((chart && this.get("includeInChartLayout")) || this._width)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
                        if(!this._width)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
                            this._width = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
                        return this._width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
                        return parentNode.get("offsetWidth");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
                return "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
            setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
                this._width = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
                return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
         * The height of the legend. Depending on the implementation of the ChartLegend, this value is `readOnly`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
         * By default, the legend is included in the layout of the `Chart` that it references. Under this circumstance,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
         * `height` is always `readOnly`. When the legend is rendered in its own dom element, the `readOnly` status is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
         * determined by the direction of the legend. If the `position` is `top` or `bottom` or the `direction` is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
         * `horizontal`, height is `readOnly`. If the position is `left` or `right` or the `direction` is `vertical`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
         * height can be explicitly set. If height is not explicitly set, the height will be determined by the width of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
         * legend's parent element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
         * @attribute height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
        height: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
            valueFn: "_heightGetter",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
            getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
                var chart = this.get("chart"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
                    parentNode = this._parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
                if(parentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
                    if((chart && this.get("includeInChartLayout")) || this._height)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
                        if(!this._height)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
                            this._height = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
                        return this._height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1568
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1569
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1570
                        return parentNode.get("offsetHeight");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1571
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
                return "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1576
            setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1577
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1578
                this._height = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1579
                return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1580
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1581
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1583
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1584
         * Indicates the x position of legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1585
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1586
         * @attribute x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
        x: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
            lazyAdd: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
            setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
                var node = this.get("boundingBox");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
                if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
                    node.setStyle(LEFT, val + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1602
                return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1603
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1604
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1605
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
         * Indicates the y position of legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
         * @attribute y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
        y: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
            lazyAdd: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
            setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
                var node = this.get("boundingBox");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
                if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1622
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
                    node.setStyle(TOP, val + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
                return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
         * Array of items contained in the legend. Each item is an object containing the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1631
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1632
         * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1633
         *      <dt>node</dt><dd>Node containing text for the legend item.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1634
         *      <dt>marker</dt><dd>Shape for the legend item.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
         * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
         * @attribute items
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
         * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1639
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1640
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1641
        items: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1642
            getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1643
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1644
                return this._items;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1645
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1649
         * Background for the legend.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1650
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1651
         * @attribute background
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1652
         * @type Rect
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
        background: {}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
         * Properties used to display and style the ChartLegend.  This attribute is inherited from `Renderer`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1658
         * Below are the default values:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1659
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1660
         *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1661
         *      <dt>gap</dt><dd>Distance, in pixels, between the `ChartLegend` instance and the chart's content. When `ChartLegend`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1662
         *      is rendered within a `Chart` instance this value is applied.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1663
         *      <dt>hAlign</dt><dd>Defines the horizontal alignment of the `items` in a `ChartLegend` rendered in a horizontal direction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1664
         *      This value is applied when the instance's `position` is set to top or bottom. This attribute can be set to left, center
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
         *      or right. The default value is center.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
         *      <dt>vAlign</dt><dd>Defines the vertical alignment of the `items` in a `ChartLegend` rendered in vertical direction. This
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
         *      value is applied when the instance's `position` is set to left or right. The attribute can be set to top, middle or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
         *      bottom. The default value is middle.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
         *      <dt>item</dt><dd>Set of style properties applied to the `items` of the `ChartLegend`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1670
         *          <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1671
         *              <dt>hSpacing</dt><dd>Horizontal distance, in pixels, between legend `items`.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1672
         *              <dt>vSpacing</dt><dd>Vertical distance, in pixels, between legend `items`.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
         *              <dt>label</dt><dd>Properties for the text of an `item`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
         *                  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
         *                      <dt>color</dt><dd>Color of the text. The default values is "#808080".</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
         *                      <dt>fontSize</dt><dd>Font size for the text. The default value is "85%".</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
         *                  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
         *              </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
         *              <dt>marker</dt><dd>Properties for the `item` markers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
         *                  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
         *                      <dt>width</dt><dd>Specifies the width of the markers.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
         *                      <dt>height</dt><dd>Specifies the height of the markers.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
         *                  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
         *              </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
         *          </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
         *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
         *      <dt>background</dt><dd>Properties for the `ChartLegend` background.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
         *          <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1689
         *              <dt>fill</dt><dd>Properties for the background fill.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1690
         *                  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1691
         *                      <dt>color</dt><dd>Color for the fill. The default value is "#faf9f2".</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1692
         *                  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1693
         *              </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1694
         *              <dt>border</dt><dd>Properties for the background border.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1695
         *                  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1696
         *                      <dt>color</dt><dd>Color for the border. The default value is "#dad8c9".</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1697
         *                      <dt>weight</dt><dd>Weight of the border. The default values is 1.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1698
         *                  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1699
         *              </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1700
         *          </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1701
         *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1702
         * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1703
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1704
         * @attribute styles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1705
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1706
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1707
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1708
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1709
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1710
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1711
}, '3.10.3', {"requires": ["charts-base"]});