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
141 lines
3.1 KiB
2 years ago
|
/*
|
||
|
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"]});
|