#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# 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;