charts-debug.js revision 87a49173dbc22a145cb87e605cca83fd42524377
1525N/A this._initProps();
var fill = {};
this._gradientBox = {
this._gradientBox = null;
if (color) {
if(!this._defs)
destroy: function()
var child;
len;
if(children)
for(; i < len; ++i)
clear: function() {
if(this._graphicsList)
this.path += Math.round(cp1x) + ", " + Math.round(cp1y) + ", " + Math.round(cp2x) + ", " + Math.round(cp2y) + ", " + x + ", " + y + " ";
this._trackSize(x, y);
drawCircle: function(x, y, r) {
this._shape = {
this._x = x - r;
this._y = y - r;
this._draw();
drawEllipse: function(x, y, w, h) {
this._shape = {
this._width = w;
this._height = h;
this._x = x;
this._y = y;
this._draw();
drawRect: function(x, y, w, h) {
this._shape = {
this._x = x;
this._y = y;
this._width = w;
this._height = h;
this.moveTo(x, y);
this.lineTo(x + w, y);
this.lineTo(x + w, y + h);
this.lineTo(x, y + h);
this.lineTo(x, y);
this._draw();
this._shape = {
this._x = x;
this._y = y;
this._width = w;
this._height = h;
this._draw();
* @param {Number} radius radius of wedge. If [optional] yRadius is defined, then radius is the x radius.
this._drawingComplete = false;
this.path = this._getWedgePath({x:x, y:y, startAngle:startAngle, arc:arc, radius:radius, yRadius:yRadius});
this._draw();
end: function() {
if(this._shapeType)
this._draw();
this._initProps();
lineGradientStyle: function() {
if (color) {
* Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates.
len;
moveTo: function(x, y) {
var x = config.x,
y = config.y,
segs,
ax,
ay,
bx,
by,
cx,
cy,
for(; i < segs; ++i)
return path;
setSize: function(w, h) {
if(this.autoSize)
_trackSize: function(w, h) {
if (w > this._width) {
this._width = w;
if (h > this._height) {
this._height = h;
this.setSize(w, h);
setPosition: function(x, y)
this.setSize(w, h);
this._initProps();
_initProps: function() {
this._shape = null;
this._fillColor = null;
this._strokeColor = null;
this._fillProps = null;
this._fillAlphas = null;
this._fillColors = null;
this._fillType = null;
this._fillRatios = null;
this._fillRotation = null;
this._fillWidth = null;
this._fillHeight = null;
this._fill = null;
this._stroked = false;
this._pathType = null;
this._attributes = {};
_clearPath: function()
this._shape = null;
this._shapeType = null;
this._pathType = null;
this._attributes = {};
_draw: function()
if(this.path)
if(this._fill)
for(i in this._attributes)
if(this._strokeColor)
if(this._fillColor)
this._clearPath();
_getFill: function() {
fill;
switch (type) {
return fill;
def,
stop,
y2 = h;
y1 = h;
x1 = w;
x2 = w;
return fill;
_createGraphics: function() {
return group;
if(!this._graphicsList)
this._graphicsList = [];
return node;
* VMLGraphics is a fallback drawing api used for basic drawing operations when SVG is not available.
this.setSize(w, h);
this._initProps();
var fill = {};
this._gradientBox = {
this._gradientBox = null;
if (color) {
this._fillProps = {
fill = {
oi,
for(;i < len; ++i)
if(config)
this._gradientBox = {
this._gradientBox = null;
clear: function() {
destroy: function()
var child;
len;
if(children)
for(; i < len; ++i)
this._path += ' c ' + Math.round(cp1x) + ", " + Math.round(cp1y) + ", " + Math.round(cp2x) + ", " + Math.round(cp2y) + ", " + x + ", " + y;
this._trackSize(x, y);
drawCircle: function(x, y, r) {
this._x = x - r;
this._y = y - r;
this._draw();
drawEllipse: function(x, y, w, h) {
this._width = w;
this._height = h;
this._x = x;
this._y = y;
this._draw();
drawRect: function(x, y, w, h) {
this._x = x;
this._y = y;
this._width = w;
this._height = h;
this.moveTo(x, y);
this.lineTo(x + w, y);
this.lineTo(x + w, y + h);
this.lineTo(x, y + h);
this.lineTo(x, y);
this._draw();
this._x = x;
this._y = y;
this._width = w;
this._height = h;
this._draw();
* @param {Number} radius radius of wedge. If [optional] yRadius is defined, then radius is the x radius.
this._drawingComplete = false;
this._path += this._getWedgePath({x:x, y:y, startAngle:startAngle, arc:arc, radius:radius, yRadius:yRadius});
this._draw();
var x = config.x,
y = config.y,
path;
path = " m " + x + " " + y + " ae " + x + " " + y + " " + radius + " " + yRadius + " " + startAngle + " " + arc;
return path;
end: function() {
if(this._shape)
this._draw();
this._initProps();
lineGradientStyle: function() {
* Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates.
len;
moveTo: function(x, y) {
setSize: function(w, h) {
w = Math.round(w);
h = Math.round(h);
this._canvasWidth = w;
this._canvasHeight = h;
setPosition: function(x, y)
x = Math.round(x);
y = Math.round(y);
this.setSize(w, h);
this._initProps();
_shape: null,
_trackSize: function(w, h) {
if (w > this._width) {
this._width = w;
if (h > this._height) {
this._height = h;
_initProps: function() {
this._fillColor = null;
this._strokeColor = null;
this._strokeOpacity = null;
this._fillProps = null;
this._fill = null;
this._stroked = false;
_clearPath: function()
this._shape = null;
_draw: function()
this.setSize(w, h);
if(this._path)
if(this._stroke)
if (this._fill) {
if (fillProps) {
this._clearPath();
_getFill: function() {
w = this._width,
h = this._height,
prop,
pct,
len,
if(this._gradientBox)
cx= Math.round( (this._gradientBox.width/2 - ((this._x - this._gradientBox.tx) * hyp/w))/(w * w/hyp) * 100);
cy = Math.round( (this._gradientBox.height/2 - ((this._y - this._gradientBox.ty) * hyp/h))/(h * h/hyp) * 100);
for(;i < len; ++i) {
return fill;
_createGraphics: function() {
return group;
return document.createElement('<' + type + ' xmlns="urn:schemas-microsft.com:vml" class="vml' + type + '"/>');
return shape;
this._draw();
autoSize: false,
_draw: function()
var cx,
cy,
rx,
ry,
if(!this.node)
this._setPath();
this._addBorder();
this._addFill();
_setPath: function()
if(this.path)
_addBorder: function()
_addFill: function()
var fillAlpha;
end: function()
this._setPath();
this._draw();
return type;
if(this.node)
if(node)
this._draw();
_draw: function()
var path,
if(this.node)
else if(!this.node)
if(this.fill)
if(this.border)
this._addBorder();
this._addFill();
_addBorder: function()
if(!this._strokeNode)
else if(this._strokeNode)
_addFill: function()
var fillAlpha;
if(this.fillnode)
if(node)
if(this.node)
this._draw();
function Renderer(){}
getter: function()
return this._styles;
graphic: {}
_styles: null,
_mergeStyles: function(a, b)
return newstyles;
_getDefaultStyles: function()
return {padding:{
_dataChangeHandler: function(e)
this._drawAxis();
_updateHandler: function(e)
this._drawAxis();
_positionChangeHandler: function(e)
this._drawAxis();
renderUI: function()
this._setCanvas();
syncUI: function()
this._drawAxis();
_setCanvas: function()
_getDefaultStyles: function()
var axisstyles = {
majorTicks: {
minorTicks: {
line: {
majorUnit: {
label: {
margin: {
hideOverlappingLabelTicks: false
_handleSizeChange: function(e)
this._drawAxis();
_layout: null,
switch(pos)
_drawAxis: function ()
if(this._drawing)
this._callLater = true;
this._drawing = true;
this._callLater = false;
len,
if(drawTicks)
this._clearLabelCache();
this._createLabelCache();
this._tickPoints = [];
for(; i < len; ++i)
if(drawTicks)
label.innerHTML = labelFunction.apply(labelFunctionScope, [this.getLabelByIndex(i, len), labelFormat]);
this._clearLabelCache();
this._drawing = false;
if(this._callLater)
this._drawAxis();
_labels: null,
_labelCache: null,
customStyles = {
for(i in styles)
return label;
_createLabelCache: function()
if(this._labels)
if(this._labelCache)
this._clearLabelCache();
this._labels = [];
_clearLabelCache: function()
if(this._labelCache)
for(; i < len; ++i)
this._labelCache = [];
_calculateSizeByTickLength: true,
return {x:w, y:pt.y};
return {x:pt.x, y:h};
getLength: function()
return np;
return point;
getLastPoint: function()
graphic: {},
node: {},
position: {
lazyAdd: false,
setOnce: true,
this.bindUI();
return val;
labels: {
readOnly: true,
getter: function()
return this._labels;
tickPoints: {
readOnly: true,
getter: function()
return this._tickPoints;
overlapGraph: {
value:true,
* Style properties used for drawing an axis. This attribute is inherited from <code>Renderer</code>. Below are the default values:
* <dt>display</dt><dd>Position of the tick. Possible values are <code>inside</code>, <code>outside</code>, <code>cross</code> and <code>none</code>. The
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the tick. The default value is 1.</dd>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the tick. The default value is 1.</dd>
* <dt>determinant</dt><dd>The algorithm used for calculating distance between ticks. The possible options are <code>count</code> and <code>distance</code>. If
* the <code>determinant</code> is <code>count</code>, the axis ticks will spaced so that a specified number of ticks appear on the axis. If the <code>determinant</code>
* is <code>distance</code>, the axis ticks will spaced out according to the specified distance. The default value is <code>count</code>.</dd>
* <dt>count</dt><dd>Number of ticks to appear on the axis when the <code>determinant</code> is <code>count</code>. The default value is 11.</dd>
* <dt>distance</dt><dd>The distance (in pixels) between ticks when the <code>determinant</code> is <code>distance</code>. The default value is 75.</dd>
* <dt>alpha</dt><dd>Number between 0 and 1 indicating the opacity of the labels. The default value is 1.</dd>
* <dt>rotation</dt><dd>The rotation, in degrees (between -90 and 90) of the labels. The default value is 0.</dd>
* <dt>margin</dt><dd>The distance between the label and the axis/tick. Depending on the position of the <code>Axis</code>, only one of the properties used.
* <dt>top</dt><dd>Pixel value used for an axis with a <code>position</code> of <code>bottom</code>. The default value is 4.</dd>
* <dt>right</dt><dd>Pixel value used for an axis with a <code>position</code> of <code>left</code>. The default value is 4.</dd>
* <dt>bottom</dt><dd>Pixel value used for an axis with a <code>position</code> of <code>top</code>. The default value is 4.</dd>
* <dt>left</dt><dd>Pixel value used for an axis with a <code>position</code> of <code>right</code>. The default value is 4.</dd>
axisRenderer: {
value: null
maxLabelSize: {
setTickOffsets: function()
switch(display)
getLineStart: function()
return pt;
max;
if(filterString)
filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
if(filterString)
filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
if(filterString)
setSizeAndPosition: function()
if(line)
setCalculatedSize: function()
axisRenderer: {
value: null
setTickOffsets: function()
switch(display)
getLineStart: function()
return pt;
max;
filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
if(filterString)
filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
if(filterString)
setSizeAndPosition: function()
setCalculatedSize: function()
axisRenderer: {
value:null
maxLabelSize: {
setTickOffsets: function()
switch(display)
getLineStart: function()
return pt;
max;
filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
if(filterString)
filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
if(filterString)
setSizeAndPosition: function()
if(line)
setCalculatedSize: function()
axisRenderer: {
value: null
maxLabelSize: {
setTickOffsets: function()
switch(display)
getLineStart: function()
return pt;
max;
m11,
m12,
m21,
m22,
leftOffset -= (cosRadians * labelWidth) + Math.min((sinRadians * labelHeight), (rot/180 * labelHeight));
filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
if(filterString)
filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
if(filterString)
setSizeAndPosition: function()
setCalculatedSize: function()
bindUI: function()
_dataProviderChangeHandler: function(e)
if(keys)
for(i in keys)
delete keys[i];
_type: null,
_setMaximum: null,
_dataMaximum: null,
_setMinimum: null,
_data: null,
_updateTotalDataFlag: true,
_dataReady: false,
obj,
keyArray = [],
for(; i < len; ++i)
return keyArray;
obj,
arr = [],
this._updateTotalDataFlag = true;
_updateTotalData: function()
this._data = [];
for(i in keys)
this._updateTotalDataFlag = false;
this._keyChangeHandler();
return value;
_updateMinAndMax: function()
len,
num,
getTotalMajorUnits: function()
var units,
return units;
var dist;
return dist;
getLabelByIndex: function(i, l)
return label;
_keyChangeHandler: function(e)
this._updateMinAndMax();
ATTRS: {
keys: {
value: {},
var keys = {},
len,
for(i in val)
this._updateTotalDataFlag = true;
return keys;
type:
readOnly: true,
getter: function ()
return this._type;
return value;
dataMaximum: {
getter: function ()
if(!this._dataMaximum)
this._updateMinAndMax();
return this._dataMaximum;
maximum: {
getter: function ()
return max;
return value;
dataMinimum: {
getter: function ()
if(!this._dataMinimum)
this._updateMinAndMax();
return this._dataMinimum;
minimum: {
getter: function ()
return min;
return val;
setMax: {
readOnly: true,
getter: function()
setMin: {
readOnly: true,
getter: function()
data: {
getter: function ()
this._updateTotalData();
return this._data;
getter: function()
col = [];
for(i in keys)
return col;
readOnly: true
return val;
value: true
if(format)
return val;
labelFormat: {
value: {
return tempMajorUnit;
return roundingUnit;
_updateMinAndMax: function()
len,
num,
key,
var roundingUnit,
if(roundingMethod)
if(useIntegers)
if(alwaysShowZero)
if(useIntegers)
if(useIntegers)
if(useIntegers)
if(useIntegers)
if(!dataRangeGreater)
if(!dataRangeGreater)
if(!dataRangeGreater)
getLabelByIndex: function(i, l)
return label;
return number;
return number;
return number;
_updateMinAndMax: function()
key,
num,
for(; i < len; ++i)
setMax: {
readOnly: true,
getter: function()
setMin: {
readOnly: true,
getter: function()
maximum: {
getter: function ()
return max;
return value;
minimum: {
getter: function ()
return min;
return value;
if(format)
return val;
labelFormat: {
getLabelByIndex: function(i, l)
return label;
var obj,
keyArray = [],
val,
for(; i < len; ++i)
return keyArray;
var obj,
arr = [],
val,
this._updateTotalDataFlag = true;
return val;
_indices: null,
_updateMinAndMax: function()
obj,
keyArr = [],
labels = [],
if(!this._indices)
this._indices = {};
for(; i < len; ++i)
keyArr[i] = i;
return labels;
obj,
arr = [],
labels = [],
if(!this._indices)
this._indices = {};
arr[i] = i;
this._updateTotalDataFlag = true;
if(!this._indices)
var dist;
return dist;
return l/ct;
getLabelByIndex: function(i, l)
var label,
return label;
function CurveUtil()
var outpoints = [],
xvals = [],
yvals = [];
return outpoints;
outpoints.push({startx: Math.round(xcoords[i]), starty: Math.round(ycoords[i]), endx: Math.round(xcoords[i+1]), endy: Math.round(ycoords[i+1])});
return outpoints;
tmp = [],
function StackingUtil(){}
_stackCoordinates: function()
len,
for(; i < len; ++i)
for(; i < len; ++i)
function Lines(){}
_lineDefaults: null,
_getGraphic: function()
if(!this._lineGraphic)
this.autoSize = false;
return this._lineGraphic;
drawLines: function()
gapSpace);
else if(!connectDiscontinuousPoints)
drawSpline: function()
cx1,
cx2,
cy1,
cy2,
for(; i < len; i = ++i)
_getLineDefaults: function()
var attrs = {
area: {
getter: function()
for(; i < len; i = ++i)
drawAreaSpline: function()
cx1,
cx2,
cy1,
cy2,
for(; i < len; i = ++i)
drawStackedAreaSpline: function()
len,
cx1,
cx2,
cy1,
cy2,
for(; i < len; i = ++i)
for(; i < len; i = ++i)
_defaults: null,
_getClosingPoints: function()
_getStackedClosingPoints: function()
_getAreaDefaults: function()
var attrs = {
markers: {
getter: function()
return this._markers;
_plotDefaults: null,
drawPlots: function()
left,
fillColors = null,
borderColors = null,
this._createMarkerCache();
for(; i < len; ++i)
if(!top || !left || top === undefined || left === undefined || top == "undefined" || left == "undefined" || isNaN(top) || isNaN(left))
if(fillColors)
if(borderColors)
this._clearMarkerCache();
_getPlotDefaults: function()
var defs = {
fill:{
colors:null,
alphas: null,
ratios: null
border:{
return defs;
_markers: null,
_markerCache: null,
var marker;
while(!marker)
return marker;
return marker;
_createMarkerCache: function()
this._markerCache = [];
this._markers = [];
this._graphicNodes = [];
_clearMarkerCache: function()
for(; i < len; ++i)
if(marker)
this._markerCache = [];
if(this._markers[i])
return val;
return val;
var state;
switch(type)
return state;
_stateSyles: null
function Histogram(){}
drawSeries: function()
left,
fillColors = null,
borderColors = null,
this._createMarkerCache();
for(; i < seriesLen; ++i)
if(order > i)
if(fillColors)
if(borderColors)
this._clearMarkerCache();
_defaultFillColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
_getPlotDefaults: function()
var defs = {
fill:{
colors:null,
alphas: null,
ratios: null
border:{
padding:{
return defs;
_xDisplayName: null,
_yDisplayName: null,
_leftOrigin: null,
_bottomOrigin: null,
render: function()
this._setCanvas();
this.addListeners();
this.validate();
addListeners: function()
if(xAxis)
if(yAxis)
if(axesReady)
this.draw();
if(axesReady)
this.draw();
if(axesReady)
this.draw();
_xAxisChangeHandler: function(e)
_yAxisChangeHandler: function(e)
if(axesReady)
this.draw();
if(axesReady)
this.draw();
_updateAxisData: function()
validate: function()
this.draw();
_setCanvas: function()
setAreaData: function()
xcoords = [],
ycoords = [],
xMarkerPlane = [],
yMarkerPlane = [],
if(graphic)
for (; i < dataLength; ++i)
draw: function()
if((isFinite(w) && isFinite(h) && w > 0 && h > 0) && ((this.get("xData") && this.get("yData")) || this._updateAxisData()))
if(this._drawing)
this._callLater = true;
this._drawing = true;
this._callLater = false;
this.setAreaData();
this.drawSeries();
this._drawing = false;
if(this._callLater)
this.draw();
_getDefaultStyles: function()
return {padding:{
_defaultLineColors:["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"],
_defaultFillColors:["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"],
_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.
_defaultSliceColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
var colors = {
if(index >= l)
_toggleVisible: function(e)
len,
if(graphic)
if(markers)
for(; i < len; ++i)
if(marker)
if(this._lineGraphic)
ATTRS: {
xDisplayName: {
getter: function()
return val;
yDisplayName: {
getter: function()
return val;
readOnly: true,
getter: function()
readOnly: true,
getter: function()
type: {
order: {},
graphOrder: {},
xcoords: {},
ycoords: {},
graph: {},
xAxis: {},
yAxis: {},
xKey: {},
yKey: {},
xData: {},
yData: {},
rendered: {
value: false
width: {
readOnly: true,
getter: function()
height: {
readOnly: true,
getter: function()
visible: {
value: true
xMarkerPlane: {},
yMarkerPlane: {},
getter: function() {
return this._defaultPlaneOffset;
getter: function() {
return this._defaultPlaneOffset;
direction: {
renderUI: function()
this._setNode();
drawSeries: function()
this.drawPlots();
_getDefaultStyles: function()
var styles = this._mergeStyles({marker:this._getPlotDefaults()}, Y.MarkerSeries.superclass._getDefaultStyles());
return styles;
ATTRS : {
type: {
* Style properties used for drawing markers. This attribute is inherited from <code>Renderer</code>. Below are the default values:
* <dt>color</dt><dd>Color of the fill. The default value is determined by the order of the series on the graph. The color
* <code>["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
* <dt>color</dt><dd>Color of the border. The default value is determined by the order of the series on the graph. The color
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
drawSeries: function()
this.drawLines();
_getDefaultStyles: function()
var styles = this._mergeStyles({line:this._getLineDefaults()}, Y.LineSeries.superclass._getDefaultStyles());
return styles;
ATTRS: {
type: {
* Style properties used for drawing lines. This attribute is inherited from <code>Renderer</code>. Below are the default values:
* <dt>color</dt><dd>The color of the line. The default value is determined by the order of the series on the graph. The color will be
* <code>["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"]</code>
* <dt>alpha</dt><dd>Number between 0 and 1 that indicates the opacity of the line. The default value is 1.</dd>
* <dt>lineType</dt><dd>Indicates whether the line is solid or dashed. The default value is solid.</dd>
* <dt>dashLength</dt><dd>When the <code>lineType</code> is dashed, indicates the length of the dash. The default value is 10.</dd>
* <dt>gapSpace</dt><dd>When the <code>lineType</code> is dashed, indicates the distance between dashes. The default value is 10.</dd>
* <dt>connectDiscontinuousPoints</dt><dd>Indicates whether or not to connect lines when there is a missing or null value between points. The default value is true.</dd>
* <dt>discontinuousType</dt><dd>Indicates whether the line between discontinuous points is solid or dashed. The default value is solid.</dd>
* <dt>discontinuousDashLength</dt><dd>When the <code>discontinuousType</code> is dashed, indicates the length of the dash. The default value is 10.</dd>
* <dt>discontinuousGapSpace</dt><dd>When the <code>discontinuousType</code> is dashed, indicates the distance between dashes. The default value is 10.</dd>
drawSeries: function()
this.drawSpline();
ATTRS : {
type : {
* Style properties used for drawing lines. This attribute is inherited from <code>Renderer</code>. Below are the default values:
* <dt>color</dt><dd>The color of the line. The default value is determined by the order of the series on the graph. The color will be
* <code>["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"]</code>
* <dt>alpha</dt><dd>Number between 0 and 1 that indicates the opacity of the line. The default value is 1.</dd>
* <dt>lineType</dt><dd>Indicates whether the line is solid or dashed. The default value is solid.</dd>
* <dt>dashLength</dt><dd>When the <code>lineType</code> is dashed, indicates the length of the dash. The default value is 10.</dd>
* <dt>gapSpace</dt><dd>When the <code>lineType</code> is dashed, indicates the distance between dashes. The default value is 10.</dd>
* <dt>connectDiscontinuousPoints</dt><dd>Indicates whether or not to connect lines when there is a missing or null value between points. The default value is true.</dd>
* <dt>discontinuousType</dt><dd>Indicates whether the line between discontinuous points is solid or dashed. The default value is solid.</dd>
* <dt>discontinuousDashLength</dt><dd>When the <code>discontinuousType</code> is dashed, indicates the length of the dash. The default value is 10.</dd>
* <dt>discontinuousGapSpace</dt><dd>When the <code>discontinuousType</code> is dashed, indicates the distance between dashes. The default value is 10.</dd>
drawSeries: function()
this.drawAreaSpline();
ATTRS : {
type: {
* Style properties used for drawing area fills. This attribute is inherited from <code>Renderer</code>. Below are the default values:
* <dt>color</dt><dd>The color of the fill. The default value is determined by the order of the series on the graph. The color will be
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number between 0 and 1 that indicates the opacity of the fill. The default value is 1</dd>
* StackedSplineSeries creates spline graphs in which the different series are stacked along a value axis
setAreaData: function()
ATTRS: {
type: {
* StackedMarkerSeries plots markers with different series stacked along the value axis to indicate each
setAreaData: function()
ATTRS: {
type: {
* The ColumnSeries class renders columns positioned horizontally along a category or time axis. The columns'
var config = {
return config;
if(this._markers[i])
xs = [],
for(; n < seriesLen; ++n)
if(order > n)
ATTRS: {
type: {
* Style properties used for drawing markers. This attribute is inherited from <code>MarkerSeries</code>. Below are the default values:
* <dt>color</dt><dd>Color of the fill. The default value is determined by the order of the series on the graph. The color
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
* <dt>color</dt><dd>Color of the border. The default value is determined by the order of the series on the graph. The color
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
renderUI: function()
this._setNode();
var config = {
return config;
if(this._markers[i])
ys = [],
for(; n < seriesLen; ++n)
if(order > n)
ATTRS: {
type: {
direction: {
* Style properties used for drawing markers. This attribute is inherited from <code>MarkerSeries</code>. Below are the default values:
* <dt>color</dt><dd>Color of the fill. The default value is determined by the order of the series on the graph. The color
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
* <dt>color</dt><dd>Color of the border. The default value is determined by the order of the series on the graph. The color
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
drawSeries: function()
_getDefaultStyles: function()
var styles = this._mergeStyles({area:this._getAreaDefaults()}, Y.AreaSeries.superclass._getDefaultStyles());
return styles;
ATTRS: {
type: {
* Style properties used for drawing area fills. This attribute is inherited from <code>Renderer</code>. Below are the default values:
* <dt>color</dt><dd>The color of the fill. The default value is determined by the order of the series on the graph. The color will be
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number between 0 and 1 that indicates the opacity of the fill. The default value is 1</dd>
* StackedAreaSplineSeries creates a stacked area chart with points data points connected by a curve.
Y.StackedAreaSplineSeries = Y.Base.create("stackedAreaSplineSeries", Y.AreaSeries, [Y.CurveUtil, Y.StackingUtil], {
drawSeries: function()
this._stackCoordinates();
this.drawStackedAreaSpline();
ATTRS : {
type: {
* The ComboSeries class renders a combination of lines, plots and area fills in a single series. Each
* series type has a corresponding boolean attribute indicating if it is rendered. By default, lines and plots
drawSeries: function()
this.drawLines();
this.drawPlots();
_getDefaultStyles: function()
return styles;
ATTRS: {
type: {
showAreaFill: {
value: false
showLines: {
value: true
showMarkers: {
value: true
* <dt>color</dt><dd>Color of the fill. The default value is determined by the order of the series on the graph. The color
* <code>["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
* <dt>color</dt><dd>Color of the border. The default value is determined by the order of the series on the graph. The color
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
marker: {
lazyAdd: false,
getter: function()
* Reference to the styles of the lines. These styles can also be accessed through the <code>styles</code> attribute.
* <dt>color</dt><dd>The color of the line. The default value is determined by the order of the series on the graph. The color will be
* <code>["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"]</code>
* <dt>alpha</dt><dd>Number between 0 and 1 that indicates the opacity of the line. The default value is 1.</dd>
* <dt>lineType</dt><dd>Indicates whether the line is solid or dashed. The default value is solid.</dd>
* <dt>dashLength</dt><dd>When the <code>lineType</code> is dashed, indicates the length of the dash. The default value is 10.</dd>
* <dt>gapSpace</dt><dd>When the <code>lineType</code> is dashed, indicates the distance between dashes. The default value is 10.</dd>
* <dt>connectDiscontinuousPoints</dt><dd>Indicates whether or not to connect lines when there is a missing or null value between points. The default value is true.</dd>
* <dt>discontinuousType</dt><dd>Indicates whether the line between discontinuous points is solid or dashed. The default value is solid.</dd>
* <dt>discontinuousDashLength</dt><dd>When the <code>discontinuousType</code> is dashed, indicates the length of the dash. The default value is 10.</dd>
* <dt>discontinuousGapSpace</dt><dd>When the <code>discontinuousType</code> is dashed, indicates the distance between dashes. The default value is 10.</dd>
line: {
lazyAdd: false,
getter: function()
* Reference to the styles of the area fills. These styles can also be accessed through the <code>styles</code> attribute.
* <dt>color</dt><dd>The color of the fill. The default value is determined by the order of the series on the graph. The color will be
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number between 0 and 1 that indicates the opacity of the fill. The default value is 1</dd>
area: {
lazyAdd: false,
getter: function()
* The StackedComboSeries class renders a combination of lines, plots and area fills in a single series. Series
* series type has a corresponding boolean attribute indicating if it is rendered. By default, all three types are
setAreaData: function()
drawSeries: function()
this.drawLines();
this.drawPlots();
ATTRS : {
type: {
showAreaFill: {
value: true
* The ComboSplineSeries class renders a combination of splines, plots and areaspline fills in a single series. Each
* series type has a corresponding boolean attribute indicating if it is rendered. By default, splines and plots
drawSeries: function()
this.drawAreaSpline();
this.drawSpline();
this.drawPlots();
ATTRS: {
type: {
* The StackedComboSplineSeries class renders a combination of splines, plots and areaspline fills in a single series. Series
* series type has a corresponding boolean attribute indicating if it is rendered. By default, all three types are
Y.StackedComboSplineSeries = Y.Base.create("stackedComboSplineSeries", Y.StackedComboSeries, [Y.CurveUtil], {
drawSeries: function()
this.drawStackedAreaSpline();
this.drawSpline();
this.drawPlots();
ATTRS: {
type : {
showAreaFill: {
value: true
* StackedLineSeries creates line graphs in which the different series are stacked along a value axis
setAreaData: function()
ATTRS: {
type: {
setAreaData: function()
drawSeries: function()
ATTRS: {
type: {
drawSeries: function()
left,
this._createMarkerCache();
w *= ratio;
if(!useOrigin)
negativeBaseValues = [];
positiveBaseValues = [];
if(useOrigin)
this._clearMarkerCache();
if(this._markers[i])
var styles,
_getPlotDefaults: function()
var defs = {
fill:{
colors:null,
alphas: null,
ratios: null
border:{
padding:{
return defs;
ATTRS: {
type: {
value: null
value: null
* Style properties used for drawing markers. This attribute is inherited from <code>ColumnSeries</code>. Below are the default values:
* <dt>color</dt><dd>Color of the fill. The default value is determined by the order of the series on the graph. The color
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
* <dt>color</dt><dd>Color of the border. The default value is determined by the order of the series on the graph. The color
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
drawSeries: function()
left,
this._createMarkerCache();
h *= ratio;
if(!useOrigin)
negativeBaseValues = [];
positiveBaseValues = [];
if(useOrigin)
left -= w;
left -= w;
this._clearMarkerCache();
if(this._markers[i])
_getPlotDefaults: function()
var defs = {
fill:{
colors:null,
alphas: null,
ratios: null
border:{
padding:{
return defs;
ATTRS: {
type: {
direction: {
value: null
value: null
* Style properties used for drawing markers. This attribute is inherited from <code>BarSeries</code>. Below are the default values:
* <dt>color</dt><dd>Color of the fill. The default value is determined by the order of the series on the graph. The color
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
* <dt>color</dt><dd>Color of the border. The default value is determined by the order of the series on the graph. The color
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
_categoryDisplayName: null,
_valueDisplayName: null,
addListeners: function()
if(categoryAxis)
if(valueAxis)
validate: function()
this.draw();
this._renderered = true;
_categoryAxisChangeHandler: function(e)
_valueAxisChangeHandler: function(e)
this.draw();
this.draw();
draw: function()
this._rendered = true;
this.drawSeries();
drawPlots: function()
tfc,
tfa,
lc,
la,
lw,
for(; i < itemCount; ++i)
this._createMarkerCache();
wedgeStyle = {
border: {
fill: {
props: {
x: halfWidth,
y: halfHeight
width: w,
height: h
this._clearMarkerCache();
if(this._markers[i])
return marker;
_clearMarkerCache: function()
for(; i < len; ++i)
this._markerCache = [];
_getPlotDefaults: function()
var defs = {
padding:{
fill:{
border: {
return defs;
_defaultLineColors:["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"],
_defaultFillColors:["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"],
_defaultBorderColors:["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"],
_defaultSliceColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
var colors = {
if(index >= l)
ATTRS: {
type: {
order: {},
graph: {},
categoryAxis: {
value: null,
valueAxis: {
value: null,
categoryKey: {
value: null,
valueKey: {
value: null,
return val;
getter: function()
return val;
getter: function()
slices: null
* Style properties used for drawing markers. This attribute is inherited from <code>MarkerSeries</code>. Below are the default values:
* <dt>colors</dt><dd>An array of colors to be used for the marker fills. The color for each marker is retrieved from the
* <code>["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"]</code>
* <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>
* <dt>color</dt><dd>An array of colors to be used for the marker borders. The color for each marker is retrieved from the
* <code>["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"]</code>
* <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
* <dt>over</dt><dd>hash containing styles for markers when highlighted by a <code>mouseover</code> event. The default
* values for each style is null. When an over style is not set, the non-over value will be used. For example,
* the default value for <code>marker.over.fill.color</code> is equivalent to <code>marker.fill.color</code>.</dd>
render: function()
this._setCanvas();
remove: function()
if(graphic)
if(gNode)
draw: function()
this._drawGridlines();
_drawGridlines: function()
points = [];
points[i] = {
if(!graphic)
this._setCanvas();
_setCanvas: function()
_getDefaultStyles: function()
var defs = {
line: {
return defs;
ATTRS: {
direction: {},
axis: {},
graph: {}
bindUI: function()
syncUI: function()
renderUI: function()
for(; i < len; ++i)
seriesTypes: null,
return series;
return series;
if(!this._dispatchers)
this._dispatchers = [];
_seriesCollection: null,
_seriesDictionary: null,
if(!val)
this._seriesCollection = [];
if(!this._seriesDictionary)
this._seriesDictionary = {};
if(!this.seriesTypes)
this.seriesTypes = [];
for(; i < len; ++i)
var seriesClass;
switch(type)
return seriesClass;
_markerEventHandler: function(e)
_dispatchers: null,
_updateStyles: function()
this._sizeChangeHandler();
_sizeChangeHandler: function(e)
if(this._background)
if(weight)
x -= weight;
y -= weight;
this._drawSeries();
_drawSeries: function()
if(this._drawing)
this._callLater = true;
this._callLater = false;
this._drawing = true;
for(; i < len; ++i)
this._callLater = true;
this._drawing = false;
if(this._callLater)
this._drawSeries();
_drawingCompleteHandler: function(e)
_getDefaultStyles: function()
var defs = {
background: {
fill:{
border: {
return defs;
ATTRS: {
* Collection of series. When setting the <code>seriesCollection</code> the array can contain a combination of either
* <code>CartesianSeries</code> instances or object literals with properties that will define a series.
getter: function()
return this._seriesCollection;
return this._seriesCollection;
value: true
readOnly: true,
getter: function()
return this._seriesDictionary;
value: null,
return val;
return gl;
value: null,
return val;
return gl;
function ChartBase() {}
* <dt>hideEvent</dt><dd>Event that should trigger the removal of a tooltip (can be an event or an array of events)</dd>
* <dt>markerLabelFunction</dt><dd>Reference to the function used to format a marker event triggered tooltip's text</dd>
* <dt>planarLabelFunction</dt><dd>Reference to the function used to format a planar event triggered tooltip's text</dd>
tooltip: {
categoryKey: {
* <dt>marker</dt><dd>Events will be broadcasted when the mouse interacts with individual markers.</dd>
* <dt>planar</dt><dd>Events will be broadcasted when the mouse intersects the plane of any markers on the chart.</dd>
dataProvider: {
seriesKeys: {},
axesCollection: {},
graph: {
_getGraph: function()
return graph;
var series = null,
if(graph)
return series;
* Returns an <code>Axis</code> instance by key reference. If the axis was explicitly set through the <code>axes</code> attribute,
* the key will be the same as the key used in the <code>axes</code> object. For default axes, the key for
* the category axis is the value of the <code>categoryKey</code> (<code>category</code>). For the value axis, the default
var axis,
return axis;
getCategoryAxis: function()
var axis,
return axis;
_dataProvider: null,
var hash,
dp = [],
return dp;
return val;
_seriesCollection: null,
_getAxisClass: function(t)
return this._axisClass[t];
_axisClass: {
_axes: null,
renderUI: function()
this._addAxes();
this._addSeries();
this._addTooltip();
this._redraw();
bindUI: function()
len;
if(tt)
if(showEvent)
if(hideEvent)
for(; i < len; ++i)
_markerEventDispatcher: function(e)
e.halt();
* Broadcasts when <code>interactionType</code> is set to <code>marker</code> and a series marker has received a mouseover event.
* Broadcasts when <code>interactionType</code> is set to <code>marker</code> and a series marker has received a mouseout event.
* Broadcasts when <code>interactionType</code> is set to <code>marker</code> and a series marker has received a mousedown event.
* Broadcasts when <code>interactionType</code> is set to <code>marker</code> and a series marker has received a mouseup event.
* Broadcasts when <code>interactionType</code> is set to <code>marker</code> and a series marker has received a click event.
this.fire("markerEvent:" + type, {categoryItem:items.category, valueItem:items.value, node:markerNode, x:x, y:y, series:series, index:index, seriesIndex:seriesIndex});
_dataProviderChangeHandler: function(e)
axis;
for(i in axes)
toggleTooltip: function(e)
this.hideTooltip();
if(msg)
_positionTooltip: function(e)
if(node)
hideTooltip: function()
_addTooltip: function()
props = {
if(styles)
for(i in styles)
for(i in props)
return tt;
_getTooltip: function()
tt = {
show: true,
markerEventHandler: function(e)
msg = tt.markerLabelFunction.apply(this, [e.categoryItem, e.valueItem, e.index, e.series, e.seriesIndex]);
planarEventHandler: function(e)
msg ,
msg = tt.planarLabelFunction.apply(this, [categoryAxis, e.valueItem, e.index, e.items, e.seriesIndex]);
return tt;
axis,
if(categoryAxis)
msg += categoryAxis.get("labelFunction").apply(this, [categoryAxis.getKeyValueAt(this.get("categoryKey"), index), categoryAxis.get("labelFormat")]);
for(; i < len; ++i)
msg += "<br/><span>" + valueItem.displayName + ": " + axis.get("labelFunction").apply(this, [axis.getKeyValueAt(valueItem.key, index), axis.get("labelFormat")]) + "</span>";
return msg;
": " + categoryItem.axis.get("labelFunction").apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]) +
": " + valueItem.axis.get("labelFunction").apply(this, [valueItem.value, valueItem.axis.get("labelFormat")]);
return msg;
_tooltipChangeHandler: function(e)
this._addTooltip();
renderUI: function()
this._addAxes();
this._addGridlines();
this._addSeries();
this._addTooltip();
this._redraw();
_planarEventDispatcher: function(e)
x = e.pageX,
y = e.pageY,
item,
items = [],
categoryItems = [],
valueItems = [],
for(; i < len; ++i)
index = i;
* Broadcasts when <code>interactionType</code> is set to <code>planar</code> and a series' marker plane has received a mouseover event.
* <dt>categoryItem</dt><dd>An array of hashes, each containing information about the category <code>Axis</code> of each marker whose plane has been intersected.</dd>
* <dt>valueItem</dt><dd>An array of hashes, each containing information about the value <code>Axis</code> of each marker whose plane has been intersected.</dd>
* <dt>items</dt><dd>An array including all the series which contain a marker whose plane has been intersected.</dd>
* Broadcasts when <code>interactionType</code> is set to <code>planar</code> and a series' marker plane has received a mouseout event.
this.fire("planarEvent:mouseover", {categoryItem:categoryItems, valueItem:valueItems, x:posX, y:posY, items:items, index:index});
_axesRenderQueue: null,
if(!this._axesRenderQueue)
this._axesRenderQueue = [];
tempKeys = [],
key,
if(key)
if((series.type == "combo" || series.type == "stackedcombo" || series.type == "combospline" || series.type == "stackedcombospline"))
if(showAreaFill !== null)
if(showMarkers !== null)
if(showLines !== null)
if(val)
return sc;
axis;
_getCategoryAxis: function()
var axis,
return axis;
keys,
axis;
if(axes)
for(i in axes)
return axis;
* literals. Used for determining attributes from series/axis references which can be an actual class instance
* literals. Used for setting attributes on a Base class, either directly or to be stored in an object literal
axes = {},
axesAttrs = {
ai,
pos,
axis,
dh,
for(i in hash)
config = {};
if(axis)
return axes;
_addAxes: function()
axis,
pos,
if(!this._axesCollection)
this._axesCollection = [];
for(i in axes)
_addSeries: function()
_addGridlines: function()
if(this._axesCollection)
if(hgl)
if(vgl)
axis,
attr,
keys,
newAxes = {},
claimedKeys = [],
ii,
ll,
dv,
valueAxes = [],
if(axes)
for(i in axes)
categoryAxisName = i;
else if(i == categoryAxisName)
this._setBaseAttribute(newAxes[i], "position", this._getDefaultAxisPosition(newAxes[i], valueAxes, seriesPosition));
for(i in dv)
this._setBaseAttribute(newAxes[valueAxisName], "position", this._getDefaultAxisPosition(newAxes[valueAxisName], valueAxes, seriesPosition));
return newAxes;
return position;
categoryItem = {
valueItem = {
valueItem = {
categoryItem = {
_axisRendered: function(e)
this._axesRenderQueue = this._axesRenderQueue.splice(1 + Y.Array.indexOf(this._axesRenderQueue, e.currentTarget), 1);
this._redraw();
_sizeChanged: function(e)
if(this._axesCollection)
this._redraw();
_redraw: function()
if(this._drawing)
this._callLater = true;
this._drawing = true;
this._callLater = false;
axis,
pos,
pts = [],
if(lc)
if(rc)
if(tc)
if(bc)
this._drawing = false;
if(this._callLater)
this._redraw();
if(graph)
if(this._overlay)
ATTRS: {
axesStyles: {
getter: function()
if(axes)
for(i in axes)
if(!styles)
styles = {};
return styles;
for(i in val)
seriesStyles: {
getter: function()
dict,
if(graph)
if(dict)
styles = {};
for(i in dict)
return styles;
for(i in val)
s = this.getSeries(i);
graphStyles: {
getter: function()
if(graph)
return this._graphStyles;
* <dt>series</dt><dd>A key indexed hash containing references to the <code>styles</code> attribute for each series in the chart.</dd>
* <dt>axes</dt><dd>A key indexed hash containing references to the <code>styles</code> attribute for each axes in the chart.</dd>
styles: {
getter: function()
var styles = {
return styles;
axes: {
* Collection of series to appear on the chart. This can be an array of Series instances or object literals
leftAxesCollection: {},
bottomAxesCollection: {},
rightAxesCollection: {},
topAxesCollection: {},
stacked: {
value: false
direction: {
getter: function()
return this._direction;
return this._direction;
showAreaFill: {},
showMarkers:{},
showLines:{},
getter: function()
if(graph)
return this._horizontalGridlines;
val = {};
if(graph)
getter: function()
if(graph)
return this._verticalGridlines;
val = {};
if(graph)
type: {
getter: function()
return this._type;
return this._type;
categoryAxis:{}
_getSeriesCollection: function()
if(this._seriesCollection)
return this._seriesCollection;
sc = [],
key,
if(axes)
return sc;
if(!this._axes)
this._axes = {};
for(i in hash)
_addAxes: function()
axis,
if(!axes)
if(!this._axesCollection)
this._axesCollection = [];
for(i in axes)
_addSeries: function()
_parseSeriesAxes: function(c)
axis;
for(; i < len; ++i)
if(s instanceof Y.PieSeries)
if(!s.type)
_getDefaultAxes: function()
for(i in dv)
if(i != catKey)
values:{
category:{
var categoryItem = {
valueItem = {
_sizeChanged: function(e)
this._redraw();
_redraw: function()
if(graph)
ATTRS: {
axes: {
getter: function()
return this._axes;
* Collection of series to appear on the chart. This can be an array of Series instances or object literals
getter: function()
return this._getSeriesCollection();
type: {
}, '@VERSION@' ,{requires:['dom', 'datatype', 'event-custom', 'event-mouseenter', 'widget', 'widget-position', 'widget-stack']});