PieSeries.js revision c40afeeb5ab5eced049dfdd466ac6202d75709df
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp/**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * PieSeries visualizes data as a circular chart divided into wedges which represent data as a
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * percentage of a whole.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
a75ebc38c1de401b679953a9b87bd323f0f48d02Tripp * @module charts
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * @class PieSeries
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @constructor
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @extends MarkerSeries
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.PieSeries = Y.Base.create("pieSeries", Y.MarkerSeries, [], {
91d40744967aabc3e1c105820a22e279fdecc689Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Image map used for interactivity when rendered with canvas.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _map
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type HTMLElement
91d40744967aabc3e1c105820a22e279fdecc689Tripp * @private
91d40744967aabc3e1c105820a22e279fdecc689Tripp */
91d40744967aabc3e1c105820a22e279fdecc689Tripp _map: null,
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Image used for image map when rendered with canvas.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _image
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type HTMLElement
91d40744967aabc3e1c105820a22e279fdecc689Tripp * @private
91d40744967aabc3e1c105820a22e279fdecc689Tripp */
91d40744967aabc3e1c105820a22e279fdecc689Tripp _image: null,
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Creates or updates the image map when rendered with canvas.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _setMap
91d40744967aabc3e1c105820a22e279fdecc689Tripp * @private
91d40744967aabc3e1c105820a22e279fdecc689Tripp */
91d40744967aabc3e1c105820a22e279fdecc689Tripp _setMap: function()
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp var id = "pieHotSpotMapi_" + Math.round(100000 * Math.random()),
91d40744967aabc3e1c105820a22e279fdecc689Tripp cb = this.get("graph").get("contentBox"),
91d40744967aabc3e1c105820a22e279fdecc689Tripp areaNode;
91d40744967aabc3e1c105820a22e279fdecc689Tripp if(this._image)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp cb.removeChild(this._image);
91d40744967aabc3e1c105820a22e279fdecc689Tripp while(this._areaNodes && this._areaNodes.length > 0)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp areaNode = this._areaNodes.shift();
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._map.removeChild(areaNode);
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
91d40744967aabc3e1c105820a22e279fdecc689Tripp cb.removeChild(this._map);
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
a5057260e5538ddf2faca20fa81271eeff2bf892Tripp this._image = DOCUMENT.createElement("img");
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==";
91d40744967aabc3e1c105820a22e279fdecc689Tripp cb.appendChild(this._image);
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.setAttribute("usemap", "#" + id);
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.style.zIndex = 3;
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.style.opacity = 0;
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.setAttribute("alt", "imagemap");
a5057260e5538ddf2faca20fa81271eeff2bf892Tripp this._map = DOCUMENT.createElement("map");
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._map.style.zIndex = 5;
91d40744967aabc3e1c105820a22e279fdecc689Tripp cb.appendChild(this._map);
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._map.setAttribute("name", id);
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._map.setAttribute("id", id);
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._areaNodes = [];
91d40744967aabc3e1c105820a22e279fdecc689Tripp },
91d40744967aabc3e1c105820a22e279fdecc689Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Storage for `categoryDisplayName` attribute.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _categoryDisplayName
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _categoryDisplayName: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Storage for `valueDisplayName` attribute.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _valueDisplayName
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _valueDisplayName: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Adds event listeners.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method addListeners
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addListeners: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var categoryAxis = this.get("categoryAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis = this.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(categoryAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataReady", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataUpdate", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(valueAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataReady", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataUpdate", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("categoryAxisChange", this.categoryAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("valueAxisChange", this.valueAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("stylesChange", this._updateHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Draws the series.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method validate
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @private
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validate: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._renderered = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Event handler for the categoryAxisChange event.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _categoryAxisChangeHandler
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Object} e Event object.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @private
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _categoryAxisChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var categoryAxis = this.get("categoryAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataReady", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataUpdate", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Event handler for the valueAxisChange event.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _valueAxisChangeHandler
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Object} e Event object.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @private
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _valueAxisChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var valueAxis = this.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataReady", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataUpdate", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * Constant used to generate unique id.
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property GUID
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type String
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * @private
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp */
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp GUID: "pieseries",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Event handler for categoryDataChange event.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _categoryDataChangeHandler
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Object} event Event object.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @private
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp */
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp _categoryDataChangeHandler: function(event)
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._rendered && this.get("categoryKey") && this.get("valueKey"))
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp {
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp this.draw();
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp }
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Event handler for valueDataChange event.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _valueDataChangeHandler
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Object} event Event object.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @private
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp */
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp _valueDataChangeHandler: function(event)
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._rendered && this.get("categoryKey") && this.get("valueKey"))
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp }
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Draws the series. Overrides the base implementation.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @method draw
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isFinite(w) && isFinite(h) && w > 0 && h > 0)
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._rendered = true;
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp if(this._drawing)
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp {
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this._callLater = true;
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp return;
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp }
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this._drawing = true;
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this._callLater = false;
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this.drawSeries();
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this._drawing = false;
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp if(this._callLater)
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp {
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this.draw();
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp }
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp else
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp {
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp this.fire("drawingComplete");
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp }
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp }
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp },
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Draws the markers
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method drawPlots
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp drawPlots: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var values = this.get("valueAxis").getDataByKey(this.get("valueKey")).concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catValues = this.get("categoryAxis").getDataByKey(this.get("categoryKey")).concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalValue = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp itemCount = values.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillColors = styles.fill.colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillAlphas = styles.fill.alphas || ["1"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderColors = styles.border.colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeights = [styles.border.weight],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderAlphas = [styles.border.alpha],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbw = borderWeights.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbc = borderColors.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tba = borderAlphas.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfa,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = styles.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp minDimension = Math.min(graph.get("width"), graph.get("height")),
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp w = minDimension - (padding.left + padding.right),
c40afeeb5ab5eced049dfdd466ac6202d75709dfTripp h = minDimension - (padding.top + padding.bottom),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle = -90,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfWidth = w / 2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfHeight = h / 2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radius = Math.min(halfWidth, halfHeight),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp la,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lw,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp wedgeStyle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder"),
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp isCanvas = Y.Graphic.NAME == "canvasGraphic";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < itemCount; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value = values[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp values.push(value);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(value))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalValue += value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfc = fillColors ? fillColors.concat() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfa = fillAlphas ? fillAlphas.concat() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
91d40744967aabc3e1c105820a22e279fdecc689Tripp if(isCanvas)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._setMap();
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.width = w;
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._image.height = h;
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < itemCount; i++)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value = values[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(totalValue === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = 360 / values.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = 360 * (value / totalValue);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = Math.round(angle);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tfc && tfc.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfc = fillColors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tfa && tfa.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfa = fillAlphas.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tbw && tbw.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbw = borderWeights.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tbw && tbc.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbc = borderColors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tba && tba.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tba = borderAlphas.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lw = tbw ? tbw.shift() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lc = tbc ? tbc.shift() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp la = tba ? tba.shift() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle += angle;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp wedgeStyle = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:lc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight:lw,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha:la
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:tfc ? tfc.shift() : this._getDefaultColor(i, "slice"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha:tfa ? tfa.shift() : null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp type: "pieslice",
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp arc: angle,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp radius: radius,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp startAngle: startAngle,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp cx: halfWidth,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp cy: halfHeight,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: h
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(wedgeStyle, graphOrder, i);
91d40744967aabc3e1c105820a22e279fdecc689Tripp if(isCanvas)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp this._addHotspot(wedgeStyle, graphOrder, i);
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Adds an interactive map when rendering in canvas.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _addHotspot
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Object} cfg Object containing data used to draw the hotspot
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Number} seriesIndex Index of series in the `seriesCollection`.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Number} index Index of the marker using the hotspot.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @private
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp */
91d40744967aabc3e1c105820a22e279fdecc689Tripp _addHotspot: function(cfg, seriesIndex, index)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
a5057260e5538ddf2faca20fa81271eeff2bf892Tripp var areaNode = DOCUMENT.createElement("area"),
91d40744967aabc3e1c105820a22e279fdecc689Tripp i = 1,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp x = cfg.cx,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp y = cfg.cy,
91d40744967aabc3e1c105820a22e279fdecc689Tripp arc = cfg.arc,
91d40744967aabc3e1c105820a22e279fdecc689Tripp startAngle = cfg.startAngle - arc,
91d40744967aabc3e1c105820a22e279fdecc689Tripp endAngle = cfg.startAngle,
91d40744967aabc3e1c105820a22e279fdecc689Tripp radius = cfg.radius,
91d40744967aabc3e1c105820a22e279fdecc689Tripp ax = x + Math.cos(startAngle / 180 * Math.PI) * radius,
91d40744967aabc3e1c105820a22e279fdecc689Tripp ay = y + Math.sin(startAngle / 180 * Math.PI) * radius,
91d40744967aabc3e1c105820a22e279fdecc689Tripp bx = x + Math.cos(endAngle / 180 * Math.PI) * radius,
91d40744967aabc3e1c105820a22e279fdecc689Tripp by = y + Math.sin(endAngle / 180 * Math.PI) * radius,
91d40744967aabc3e1c105820a22e279fdecc689Tripp numPoints = Math.floor(arc/10) - 1,
91d40744967aabc3e1c105820a22e279fdecc689Tripp divAngle = (arc/(Math.floor(arc/10)) / 180) * Math.PI,
91d40744967aabc3e1c105820a22e279fdecc689Tripp angleCoord = Math.atan((ay - y)/(ax - x)),
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts = x + ", " + y + ", " + ax + ", " + ay,
91d40744967aabc3e1c105820a22e279fdecc689Tripp cosAng,
91d40744967aabc3e1c105820a22e279fdecc689Tripp sinAng,
91d40744967aabc3e1c105820a22e279fdecc689Tripp multDivAng;
91d40744967aabc3e1c105820a22e279fdecc689Tripp for(i = 1; i <= numPoints; ++i)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp multDivAng = divAngle * i;
91d40744967aabc3e1c105820a22e279fdecc689Tripp cosAng = Math.cos(angleCoord + multDivAng);
91d40744967aabc3e1c105820a22e279fdecc689Tripp sinAng = Math.sin(angleCoord + multDivAng);
91d40744967aabc3e1c105820a22e279fdecc689Tripp if(startAngle <= 90)
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts += ", " + (x + (radius * Math.cos(angleCoord + (divAngle * i))));
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts += ", " + (y + (radius * Math.sin(angleCoord + (divAngle * i))));
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
91d40744967aabc3e1c105820a22e279fdecc689Tripp else
91d40744967aabc3e1c105820a22e279fdecc689Tripp {
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts += ", " + (x - (radius * Math.cos(angleCoord + (divAngle * i))));
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts += ", " + (y - (radius * Math.sin(angleCoord + (divAngle * i))));
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
91d40744967aabc3e1c105820a22e279fdecc689Tripp }
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts += ", " + bx + ", " + by;
91d40744967aabc3e1c105820a22e279fdecc689Tripp pts += ", " + x + ", " + y;
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._map.appendChild(areaNode);
2a322140e93579c14e2037ff2eb3e62eaa86c9dfTripp areaNode.setAttribute("class", SERIES_MARKER);
91d40744967aabc3e1c105820a22e279fdecc689Tripp areaNode.setAttribute("id", "hotSpot_" + seriesIndex + "_" + index);
91d40744967aabc3e1c105820a22e279fdecc689Tripp areaNode.setAttribute("shape", "polygon");
91d40744967aabc3e1c105820a22e279fdecc689Tripp areaNode.setAttribute("coords", pts);
91d40744967aabc3e1c105820a22e279fdecc689Tripp this._areaNodes.push(areaNode);
91d40744967aabc3e1c105820a22e279fdecc689Tripp
91d40744967aabc3e1c105820a22e279fdecc689Tripp },
91d40744967aabc3e1c105820a22e279fdecc689Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Resizes and positions markers based on a mouse interaction.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @method updateMarkerState
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @param {String} type state of the marker
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @param {Number} i index of the marker
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp if(this._markers[i])
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp var state = this._getState(type),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp indexStyles,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp marker = this._markers[i],
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp styles = this.get("styles").marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles = this._mergeStyles(markerStyles, {});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles.fill.color = indexStyles.fill.colors[i % indexStyles.fill.colors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles.fill.alpha = indexStyles.fill.alphas[i % indexStyles.fill.alphas.length];
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp marker.set(indexStyles);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp * Creates a shape to be used as a marker.
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp *
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp * @method _createMarker
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp * @param {Object} styles Hash of style properties.
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp * @param {Number} order Order of the series.
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp * @param {Number} index Index within the series associated with the marker.
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp * @return Shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp */
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp _createMarker: function(styles, order, index)
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp {
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp var graphic = this.get("graphic"),
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp marker,
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp cfg = Y.clone(styles);
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp graphic.set("autoDraw", false);
a12380a54ea6e3ec3f16a090eee8ec5bf93aed83Tripp marker = graphic.addShape(cfg);
2a322140e93579c14e2037ff2eb3e62eaa86c9dfTripp marker.addClass(SERIES_MARKER);
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp return marker;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp },
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Creates a cache of markers for reuse.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _createMarkerCache
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp * @private
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp */
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp _clearMarkerCache: function()
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp {
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp var len = this._markerCache.length,
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp i = 0,
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp marker;
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp for(; i < len; ++i)
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp {
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp marker = this._markerCache[i];
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp if(marker)
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp {
cc21b565833307c2b0b06deb4e3ab22c2a94be3eTripp marker.destroy();
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp }
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp }
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp this._markerCache = [];
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp },
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Gets the default style values for the markers.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _getPlotDefaults
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @return Object
c6624d55071139dbc6ebd4252f6c7ee46a5800a9Tripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas:["1"]
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.colors = this._defaultSliceColors;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.colors = this._defaultBorderColors;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Collection of default colors used for lines in a series when not specified by user.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _defaultLineColors
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type Array
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultLineColors:["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Collection of default colors used for marker fills in a series when not specified by user.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _defaultFillColors
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type Array
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultFillColors:["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Collection of default colors used for marker borders in a series when not specified by user.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _defaultBorderColors
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type Array
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultBorderColors:["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Collection of default colors used for area fills, histogram fills and pie fills in a series when not specified by user.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @property _defaultSliceColors
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type Array
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultSliceColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Colors used if style colors are not specified
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _getDefaultColor
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {Number} index Index indicating the series order.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @param {String} type Indicates which type of object needs the color.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @return String
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultColor: function(index, type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var colors = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line: this._defaultLineColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill: this._defaultFillColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: this._defaultBorderColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp slice: this._defaultSliceColors
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp col = colors[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = col.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = index || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(index >= l)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = index % l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = type || "fill";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return colors[type][index];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Read-only attribute indicating the type of series.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute type
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @default pie
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "pie"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Order of this instance of this `type`.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute order
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Number
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order: {},
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Reference to the `Graph` in which the series is drawn into.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute graph
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Graph
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: {},
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Reference to the `Axis` instance used for assigning
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * category values to the graph.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute categoryAxis
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Axis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("categoryAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Reference to the `Axis` instance used for assigning
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * series values to the graph.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute categoryAxis
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type Axis
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * the category `Axis` instance.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @attribute categoryKey
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryKey: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("categoryKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * the value `Axis` instance.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @attribute valueKey
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueKey: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("valueKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Name used for for displaying category data
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute categoryDisplayName
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._categoryDisplayName = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._categoryDisplayName || this.get("categoryKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp /**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Name used for for displaying value data
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute valueDisplayName
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._valueDisplayName = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._valueDisplayName || this.get("valueKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @attribute slices
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @type Array
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * @private
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp slices: null
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Style properties used for drawing markers. This attribute is inherited from `MarkerSeries`. Below are the default values:
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dl>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>fill</dt><dd>A hash containing the following values:
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dl>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>colors</dt><dd>An array of colors to be used for the marker fills. The color for each marker is retrieved from the
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * array below:<br/>
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * `["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]`
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * </dd>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>alphas</dt><dd>An array of alpha references (Number from 0 to 1) indicating the opacity of each marker fill. The default value is [1].</dd>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * </dl>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * </dd>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>border</dt><dd>A hash containing the following values:
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dl>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>color</dt><dd>An array of colors to be used for the marker borders. The color for each marker is retrieved from the
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * array below:<br/>
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * `["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]`
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * <dt>weight</dt><dd>Number indicating the width of the border. The default value is 1.</dd>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * </dl>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * </dd>
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * <dt>over</dt><dd>hash containing styles for markers when highlighted by a `mouseover` event. The default
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * values for each style is null. When an over style is not set, the non-over value will be used. For example,
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * the default value for `marker.over.fill.color` is equivalent to `marker.fill.color`.</dd>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * </dl>
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp *
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * @attribute styles
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp * @type Object
0abcc4acb057a275ed7f098295ecd5de79b6a510Tripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});