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