Version 3.18.1
Show:

File: charts/js/PieChartLegend.js

            PieChartLegend = Y.Base.create("pieChartLegend", Y.PieChart, [], {
                /**
                 * Redraws the chart instance.
                 *
                 * @method _redraw
                 * @private
                 */
                _redraw: function()
                {
                    if(this._drawing)
                    {
                        this._callLater = true;
                        return;
                    }
                    this._drawing = true;
                    this._callLater = false;
                    var graph = this.get("graph"),
                        w = this.get("width"),
                        h = this.get("height"),
                        graphWidth,
                        graphHeight,
                        legend = this.get("legend"),
                        x = 0,
                        y = 0,
                        legendX = 0,
                        legendY = 0,
                        legendWidth,
                        legendHeight,
                        dimension,
                        gap,
                        position,
                        direction;
                    if(graph)
                    {
                        if(legend)
                        {
                            position = legend.get("position");
                            direction = legend.get("direction");
                            graphWidth = graph.get("width");
                            graphHeight = graph.get("height");
                            legendWidth = legend.get("width");
                            legendHeight = legend.get("height");
                            gap = legend.get("styles").gap;
            
                            if((direction === "vertical" && (graphWidth + legendWidth + gap !== w)) ||
                                (direction === "horizontal" &&  (graphHeight + legendHeight + gap !== h)))
                            {
                                switch(legend.get("position"))
                                {
                                    case LEFT :
                                        dimension = Math.min(w - (legendWidth + gap), h);
                                        legendHeight = h;
                                        x = legendWidth + gap;
                                        legend.set(HEIGHT, legendHeight);
                                    break;
                                    case TOP :
                                        dimension = Math.min(h - (legendHeight + gap), w);
                                        legendWidth = w;
                                        y = legendHeight + gap;
                                        legend.set(WIDTH, legendWidth);
                                    break;
                                    case RIGHT :
                                        dimension = Math.min(w - (legendWidth + gap), h);
                                        legendHeight = h;
                                        legendX = dimension + gap;
                                        legend.set(HEIGHT, legendHeight);
                                    break;
                                    case BOTTOM :
                                        dimension = Math.min(h - (legendHeight + gap), w);
                                        legendWidth = w;
                                        legendY = dimension + gap;
                                        legend.set(WIDTH, legendWidth);
                                    break;
                                }
                                graph.set(WIDTH, dimension);
                                graph.set(HEIGHT, dimension);
                            }
                            else
                            {
                                switch(legend.get("position"))
                                {
                                    case LEFT :
                                        x = legendWidth + gap;
                                    break;
                                    case TOP :
                                        y = legendHeight + gap;
                                    break;
                                    case RIGHT :
                                        legendX = graphWidth + gap;
                                    break;
                                    case BOTTOM :
                                        legendY = graphHeight + gap;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            graph.set(_X, 0);
                            graph.set(_Y, 0);
                            graph.set(WIDTH, w);
                            graph.set(HEIGHT, h);
                        }
                    }
                    this._drawing = false;
                    if(this._callLater)
                    {
                        this._redraw();
                        return;
                    }
                    if(graph)
                    {
                        graph.set(_X, x);
                        graph.set(_Y, y);
                    }
                    if(legend)
                    {
                        legend.set(_X, legendX);
                        legend.set(_Y, legendY);
                    }
                }
            }, {
                ATTRS: {
                    /**
                     * The legend for the chart.
                     *
                     * @attribute
                     * @type Legend
                     */
                    legend: LEGEND
                }
            });
            Y.PieChart = PieChartLegend;