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