You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
415 lines
9.8 KiB
415 lines
9.8 KiB
/*
|
|
YUI 3.17.2 (build 9c3c78e)
|
|
Copyright 2014 Yahoo! Inc. All rights reserved.
|
|
Licensed under the BSD License.
|
|
http://yuilibrary.com/license/
|
|
*/
|
|
|
|
YUI.add('series-base', function (Y, NAME) {
|
|
|
|
/**
|
|
* Provides functionality for creating a chart series.
|
|
*
|
|
* @module charts
|
|
* @submodule series-base
|
|
*/
|
|
|
|
/**
|
|
* An abstract class for creating series instances.
|
|
* SeriesBase is used by the following classes:
|
|
* <ul>
|
|
* <li>{{#crossLink "CartesianSeries"}}{{/crossLink}}</li>
|
|
* <li>{{#crossLink "PieSeries"}}{{/crossLink}}</li>
|
|
* </ul>
|
|
*
|
|
* @class SeriesBase
|
|
* @extends Base
|
|
* @uses Renderer
|
|
* @constructor
|
|
* @param {Object} config (optional) Configuration parameters.
|
|
* @submodule series-base
|
|
*/
|
|
Y.SeriesBase = Y.Base.create("seriesBase", Y.Base, [Y.Renderer], {
|
|
/**
|
|
* @method render
|
|
* @private
|
|
*/
|
|
render: function()
|
|
{
|
|
this._setCanvas();
|
|
this.addListeners();
|
|
this.validate();
|
|
},
|
|
|
|
/**
|
|
* Creates a `Graphic` instance.
|
|
*
|
|
* @method _setCanvas
|
|
* @protected
|
|
*/
|
|
_setCanvas: function()
|
|
{
|
|
var graph = this.get("graph"),
|
|
graphic = graph.get("graphic");
|
|
this.set("graphic", graphic);
|
|
},
|
|
|
|
/**
|
|
* Returns a reference to the parent container to which all chart elements are contained.
|
|
* When the series is bound to a `Chart` instance, the `Chart` instance is the reference.
|
|
* If nothing is set as the `chart` attribute, the `_getChart` method will return a reference
|
|
* to the `graphic` attribute.
|
|
*
|
|
* @method _getChart
|
|
* @return {Object}
|
|
* @private
|
|
*/
|
|
_getChart:function() {
|
|
var chart,
|
|
graph = this.get("graph");
|
|
if(graph)
|
|
{
|
|
chart = graph.get("chart");
|
|
}
|
|
if(!chart)
|
|
{
|
|
chart = this.get("graphic");
|
|
}
|
|
return chart;
|
|
},
|
|
|
|
/**
|
|
* Returns the sum of all values for the series.
|
|
*
|
|
* @method getTotalValues
|
|
* @return Number
|
|
*/
|
|
getTotalValues: function()
|
|
{
|
|
var valueCoord = this.get("direction") === "vertical" ? "x" : "y",
|
|
total = this.get(valueCoord + "Axis").getTotalByKey(this.get(valueCoord + "Key"));
|
|
return total;
|
|
},
|
|
|
|
/**
|
|
* Gets the default value for the `styles` attribute. Overrides
|
|
* base implementation.
|
|
*
|
|
* @method _getDefaultStyles
|
|
* @return Object
|
|
* @protected
|
|
*/
|
|
_getDefaultStyles: function()
|
|
{
|
|
return {padding:{
|
|
top: 0,
|
|
left: 0,
|
|
right: 0,
|
|
bottom: 0
|
|
}};
|
|
},
|
|
|
|
/**
|
|
* Shows/hides contents of the series.
|
|
*
|
|
* @method _handleVisibleChange
|
|
* @param {Object} e Event object.
|
|
* @protected
|
|
*/
|
|
_handleVisibleChange: function()
|
|
{
|
|
this._toggleVisible(this.get("visible"));
|
|
},
|
|
|
|
/**
|
|
* Destructor implementation for the CartesianSeries class. Calls destroy on all Graphic instances.
|
|
*
|
|
* @method destructor
|
|
* @protected
|
|
*/
|
|
destructor: function()
|
|
{
|
|
var marker,
|
|
markers = this.get("markers");
|
|
if(this.get("rendered"))
|
|
{
|
|
if(this._stylesChangeHandle)
|
|
{
|
|
this._stylesChangeHandle.detach();
|
|
}
|
|
if(this._widthChangeHandle)
|
|
{
|
|
this._widthChangeHandle.detach();
|
|
}
|
|
if(this._heightChangeHandle)
|
|
{
|
|
this._heightChangeHandle.detach();
|
|
}
|
|
if(this._visibleChangeHandle)
|
|
{
|
|
this._visibleChangeHandle.detach();
|
|
}
|
|
}
|
|
while(markers && markers.length > 0)
|
|
{
|
|
marker = markers.shift();
|
|
if(marker && marker instanceof Y.Shape)
|
|
{
|
|
marker.destroy();
|
|
}
|
|
}
|
|
if(this._path)
|
|
{
|
|
this._path.destroy();
|
|
this._path = null;
|
|
}
|
|
if(this._lineGraphic)
|
|
{
|
|
this._lineGraphic.destroy();
|
|
this._lineGraphic = null;
|
|
}
|
|
if(this._groupMarker)
|
|
{
|
|
this._groupMarker.destroy();
|
|
this._groupMarker = null;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Collection of default colors used for lines in a series when not specified by user.
|
|
*
|
|
* @property _defaultLineColors
|
|
* @type Array
|
|
* @protected
|
|
*/
|
|
_defaultLineColors:[
|
|
"#426ab3",
|
|
"#d09b2c",
|
|
"#000000",
|
|
"#b82837",
|
|
"#b384b5",
|
|
"#ff7200",
|
|
"#779de3",
|
|
"#cbc8ba",
|
|
"#7ed7a6",
|
|
"#007a6c"
|
|
],
|
|
|
|
/**
|
|
* Collection of default colors used for marker fills in a series when not specified by user.
|
|
*
|
|
* @property _defaultFillColors
|
|
* @type Array
|
|
* @protected
|
|
*/
|
|
_defaultFillColors:[
|
|
"#6084d0",
|
|
"#eeb647",
|
|
"#6c6b5f",
|
|
"#d6484f",
|
|
"#ce9ed1",
|
|
"#ff9f3b",
|
|
"#93b7ff",
|
|
"#e0ddd0",
|
|
"#94ecba",
|
|
"#309687"
|
|
],
|
|
|
|
/**
|
|
* Collection of default colors used for marker borders in a series when not specified by user.
|
|
*
|
|
* @property _defaultBorderColors
|
|
* @type Array
|
|
* @protected
|
|
*/
|
|
_defaultBorderColors:[
|
|
"#205096",
|
|
"#b38206",
|
|
"#000000",
|
|
"#94001e",
|
|
"#9d6fa0",
|
|
"#e55b00",
|
|
"#5e85c9",
|
|
"#adab9e",
|
|
"#6ac291",
|
|
"#006457"
|
|
],
|
|
|
|
/**
|
|
* Collection of default colors used for area fills, histogram fills and pie fills in a series when not specified by user.
|
|
*
|
|
* @property _defaultSliceColors
|
|
* @type Array
|
|
* @protected
|
|
*/
|
|
_defaultSliceColors: [
|
|
"#66007f",
|
|
"#a86f41",
|
|
"#295454",
|
|
"#996ab2",
|
|
"#e8cdb7",
|
|
"#90bdbd",
|
|
"#000000",
|
|
"#c3b8ca",
|
|
"#968373",
|
|
"#678585"
|
|
],
|
|
|
|
/**
|
|
* Parses a color based on a series order and type.
|
|
*
|
|
* @method _getDefaultColor
|
|
* @param {Number} index Index indicating the series order.
|
|
* @param {String} type Indicates which type of object needs the color.
|
|
* @return String
|
|
* @protected
|
|
*/
|
|
_getDefaultColor: function(index, type)
|
|
{
|
|
var colors = {
|
|
line: this._defaultLineColors,
|
|
fill: this._defaultFillColors,
|
|
border: this._defaultBorderColors,
|
|
slice: this._defaultSliceColors
|
|
},
|
|
col = colors[type] || colors.fill,
|
|
l = col.length;
|
|
index = index || 0;
|
|
if(index >= l)
|
|
{
|
|
index = index % l;
|
|
}
|
|
type = type || "fill";
|
|
return colors[type][index];
|
|
}
|
|
}, {
|
|
ATTRS: {
|
|
/*
|
|
* Returns the width of the parent graph
|
|
*
|
|
* @attribute width
|
|
* @type Number
|
|
*/
|
|
width: {
|
|
readOnly: true,
|
|
|
|
getter: function()
|
|
{
|
|
return this.get("graphic").get("width");
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Returns the height of the parent graph
|
|
*
|
|
* @attribute height
|
|
* @type Number
|
|
*/
|
|
height: {
|
|
readOnly: true,
|
|
|
|
getter: function()
|
|
{
|
|
return this.get("graphic").get("height");
|
|
}
|
|
},
|
|
|
|
/**
|
|
* The graphic in which drawings will be rendered.
|
|
*
|
|
* @attribute graphic
|
|
* @type Graphic
|
|
*/
|
|
graphic: {
|
|
lazyAdd: false,
|
|
|
|
setter: function(val) {
|
|
//woraround for Attribute order of operations bug
|
|
if(!this.get("rendered")) {
|
|
this.set("rendered", true);
|
|
}
|
|
return val;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Reference to the `Chart` application. If no `Chart` application is present,
|
|
* a reference to the `Graphic` instance that the series is drawn into will be returned.
|
|
*
|
|
* @attribute chart
|
|
* @type ChartBase
|
|
*/
|
|
chart: {
|
|
getter: function()
|
|
{
|
|
var chart,
|
|
graph = this.get("graph");
|
|
if(graph)
|
|
{
|
|
chart = graph.get("chart");
|
|
}
|
|
return chart;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Reference to the `Graph` in which the series is drawn into.
|
|
*
|
|
* @attribute graph
|
|
* @type Graph
|
|
*/
|
|
graph: {},
|
|
|
|
/**
|
|
* Indicates whether the Series has been through its initial set up.
|
|
*
|
|
* @attribute rendered
|
|
* @type Boolean
|
|
*/
|
|
rendered: {
|
|
value: false
|
|
},
|
|
|
|
/**
|
|
* Indicates whether to show the series
|
|
*
|
|
* @attribute visible
|
|
* @type Boolean
|
|
* @default true
|
|
*/
|
|
visible: {
|
|
value: true
|
|
},
|
|
|
|
/**
|
|
* Indicates whether or not markers for a series will be grouped and rendered in a single complex shape instance.
|
|
*
|
|
* @attribute groupMarkers
|
|
* @type Boolean
|
|
*/
|
|
groupMarkers: {
|
|
getter: function()
|
|
{
|
|
var graph,
|
|
groupMarkers = this._groupMarkers;
|
|
if(!groupMarkers) {
|
|
graph = this.get("graph");
|
|
if(graph)
|
|
{
|
|
groupMarkers = graph.get("groupMarkers");
|
|
}
|
|
}
|
|
return groupMarkers;
|
|
},
|
|
|
|
setter: function(val)
|
|
{
|
|
this._groupMarkers = val;
|
|
return val;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
}, '3.17.2', {"requires": ["graphics", "axis-base"]});
|
|
|