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.
140 lines
3.1 KiB
140 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"]});
|
|
|