PieSeries.js revision 8648721e29bb657dd5c5ff20f03e86fe50628ce6
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * PieSeries visualizes data as a circular chart divided into wedges which represent data as a
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * percentage of a whole.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @constructor
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @extends MarkerSeries
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.PieSeries = Y.Base.create("pieSeries", Y.MarkerSeries, [], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataReady", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataUpdate", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataReady", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataUpdate", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("categoryAxisChange", this.categoryAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("valueAxisChange", this.valueAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._renderered = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataReady", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataUpdate", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataReady", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataUpdate", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Constant used to generate unique id.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (protected)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Handles updating the graph when the x < code>Axis</code> values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._rendered && this.get("categoryKey") && this.get("valueKey"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (protected)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Handles updating the chart when the y <code>Axis</code> values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._rendered && this.get("categoryKey") && this.get("valueKey"))
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @protected
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Draws the series. Overrides the base implementation.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @method draw
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._rendered = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var values = this.get("valueAxis").getDataByKey(this.get("valueKey")).concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catValues = this.get("categoryAxis").getDataByKey(this.get("categoryKey")).concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width") - (padding.left + padding.right),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height") - (padding.top + padding.bottom),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < itemCount; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:tfc ? tfc.shift() : this._getDefaultColor(i, "slice"),
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @protected
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Resizes and positions markers based on a mouse interaction.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @method updateMarkerState
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @param {String} type state of the marker
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @param {Number} i index of the marker
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles.fill.color = indexStyles.fill.colors[i % indexStyles.fill.colors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles.fill.alpha = indexStyles.fill.alphas[i % indexStyles.fill.alphas.length];
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp marker.node.setAttribute("id", "series_" + order + "_" + index);
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultLineColors:["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultFillColors:["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultBorderColors:["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultSliceColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Colors used if style colors are not specified
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Read-only attribute indicating the type of series.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute type
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @default pie
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Order of this instance of this <code>type</code>.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute order
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Number
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Reference to the <code>Graph</code> in which the series is drawn into.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute graph
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Graph
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to the <code>Axis</code> instance used for assigning
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * category values to the graph.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute categoryAxis
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Axis
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Reference to the <code>Axis</code> instance used for assigning
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * series values to the graph.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute categoryAxis
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Axis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the category <code>Axis</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the value <code>Axis</code> instance.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Name used for for displaying category data
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute categoryDisplayName
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._categoryDisplayName || this.get("categoryKey");
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Name used for for displaying value data
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute valueDisplayName
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._valueDisplayName || this.get("valueKey");