82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp/**
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp * StackedAxis manages stacked numeric data on an axis.
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp *
a75ebc38c1de401b679953a9b87bd323f0f48d02Tripp * @module charts
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp * @class StackedAxis
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp * @constructor
a75ebc38c1de401b679953a9b87bd323f0f48d02Tripp * @param {Object} config (optional) Configuration parameters for the Chart.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @extends NumericAxis
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction StackedAxis(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp StackedAxis.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippStackedAxis.NAME = "stackedAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(StackedAxis, Y.NumericAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * Calculates the maximum and minimum values for the `Axis`.
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp *
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @method _updateMinAndMax
8209f3939e32e0e5bde64192267fdaf9db6f4fbcTripp * @private
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp */
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp _updateMinAndMax: function()
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp var max = 0,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp min = 0,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp pos = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp neg = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = 0,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num,
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp keys = this.get("keys"),
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp setMin = this.get("setMin"),
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp setMax = this.get("setMax");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(key in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = Math.max(len, keys[key].length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp neg = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(key in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num = keys[key][i];
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp if(isNaN(num))
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(num >= 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos += num;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp neg += num;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(max, pos);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(max, neg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(neg < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(min, neg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(min, pos);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp this._actualMaximum = max;
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp this._actualMinimum = min;
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp if(setMax)
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp {
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp max = this._setMaximum;
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp }
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp if(setMin)
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp {
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp min = this._setMinimum;
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp }
b4da4dbaec018452f750d5ffc00c96e4eba47e9aTripp this._roundMinAndMax(min, max, setMin, setMax);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedAxis = StackedAxis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp