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.

141 lines
3.1 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('axis-stacked-base', function (Y, NAME) {
/**
* Provides core functionality for the handling of stacked numeric axis data for a chart.
*
* @module charts
* @submodule axis-stacked-base
*/
/**
* StackedImpl contains logic for managing stacked numeric data. StackedImpl is used by the following classes:
* <ul>
* <li>{{#crossLink "StackedAxisBase"}}{{/crossLink}}</li>
* <li>{{#crossLink "StackedAxis"}}{{/crossLink}}</li>
* </ul>
*
* @submodule axis-stacked-base
* @class StackedImpl
* @constructor
*/
function StackedImpl()
{
}
StackedImpl.NAME = "stackedImpl";
StackedImpl.prototype = {
/**
* Type of data used in `Data`.
*
* @property _type
* @readOnly
* @private
*/
_type: "stacked",
/**
* Calculates the maximum and minimum values for the `Data`.
*
* @method _updateMinAndMax
* @private
*/
_updateMinAndMax: function()
{
var max = 0,
min = 0,
pos = 0,
neg = 0,
len = 0,
i = 0,
key,
num,
keys = this.get("keys"),
setMin = this.get("setMin"),
setMax = this.get("setMax");
for(key in keys)
{
if(keys.hasOwnProperty(key))
{
len = Math.max(len, keys[key].length);
}
}
for(; i < len; ++i)
{
pos = 0;
neg = 0;
for(key in keys)
{
if(keys.hasOwnProperty(key))
{
num = keys[key][i];
if(isNaN(num))
{
continue;
}
if(num >= 0)
{
pos += num;
}
else
{
neg += num;
}
}
}
if(pos > 0)
{
max = Math.max(max, pos);
}
else
{
max = Math.max(max, neg);
}
if(neg < 0)
{
min = Math.min(min, neg);
}
else
{
min = Math.min(min, pos);
}
}
this._actualMaximum = max;
this._actualMinimum = min;
if(setMax)
{
max = this._setMaximum;
}
if(setMin)
{
min = this._setMinimum;
}
this._roundMinAndMax(min, max, setMin, setMax);
}
};
Y.StackedImpl = StackedImpl;
/**
* StackedAxisBase manages stacked numeric data for an axis.
*
* @class StackedAxisBase
* @constructor
* @extends AxisBase
* @uses StackedImpl
* @param {Object} config (optional) Configuration parameters.
* @submodule axis-stacked-base
*/
Y.StackedAxisBase = Y.Base.create("stackedAxisBase", Y.NumericAxisBase, [Y.StackedImpl]);
}, '3.17.2', {"requires": ["axis-numeric-base"]});