diff -r d334a616c023 -r e16a97fb364a src/cm/media/js/lib/yui/yui3-3.15.0/build/axis-time-base/axis-time-base-debug.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui3-3.15.0/build/axis-time-base/axis-time-base-debug.js Mon Mar 10 15:19:48 2014 +0100 @@ -0,0 +1,352 @@ +YUI.add('axis-time-base', function (Y, NAME) { + +/** + * Provides functionality for the handling of time axis data for a chart. + * + * @module charts + * @submodule axis-time-base + */ +var Y_Lang = Y.Lang; + +/** + * TimeImpl contains logic for time data. TimeImpl is used by the following classes: + * + * + * @class TimeImpl + * @constructor + * @submodule axis-time-base + */ +function TimeImpl() +{ +} + +TimeImpl.NAME = "timeImpl"; + +TimeImpl.ATTRS = +{ + /** + * Method used for formatting a label. This attribute allows for the default label formatting method to overridden. + * The method use would need to implement the arguments below and return a `String` or an `HTMLElement`. The default + * implementation of the method returns a `String`. The output of this method will be rendered to the DOM using + * `appendChild`. If you override the `labelFunction` method and return an html string, you will also need to override + * the Axis' `appendLabelFunction` to accept html as a `String`. + *
+ *
val
Label to be formatted. (`String`)
+ *
format
STRFTime string used to format the label. (optional)
+ *
+ * + * @attribute labelFunction + * @type Function + */ + + /** + * Pattern used by the `labelFunction` to format a label. + * + * @attribute labelFormat + * @type String + */ + labelFormat: { + value: "%b %d, %y" + } +}; + +TimeImpl.prototype = { + /** + * Type of data used in `Data`. + * + * @property _type + * @readOnly + * @private + */ + _type: "time", + + /** + * Getter method for maximum attribute. + * + * @method _maximumGetter + * @return Number + * @private + */ + _maximumGetter: function () + { + var max = this._getNumber(this._setMaximum); + if(!Y_Lang.isNumber(max)) + { + max = this._getNumber(this.get("dataMaximum")); + } + return parseFloat(max); + }, + + /** + * Setter method for maximum attribute. + * + * @method _maximumSetter + * @param {Object} value + * @private + */ + _maximumSetter: function (value) + { + this._setMaximum = this._getNumber(value); + return value; + }, + + /** + * Getter method for minimum attribute. + * + * @method _minimumGetter + * @return Number + * @private + */ + _minimumGetter: function () + { + var min = this._getNumber(this._setMinimum); + if(!Y_Lang.isNumber(min)) + { + min = this._getNumber(this.get("dataMinimum")); + } + return parseFloat(min); + }, + + /** + * Setter method for minimum attribute. + * + * @method _minimumSetter + * @param {Object} value + * @private + */ + _minimumSetter: function (value) + { + this._setMinimum = this._getNumber(value); + return value; + }, + + /** + * Indicates whether or not the maximum attribute has been explicitly set. + * + * @method _getSetMax + * @return Boolean + * @private + */ + _getSetMax: function() + { + var max = this._getNumber(this._setMaximum); + return (Y_Lang.isNumber(max)); + }, + + /** + * Indicates whether or not the minimum attribute has been explicitly set. + * + * @method _getSetMin + * @return Boolean + * @private + */ + _getSetMin: function() + { + var min = this._getNumber(this._setMinimum); + return (Y_Lang.isNumber(min)); + }, + + /** + * Formats a label based on the axis type and optionally specified format. + * + * @method formatLabel + * @param {Object} value + * @param {Object} format Pattern used to format the value. + * @return String + */ + formatLabel: function(val, format) + { + val = Y.DataType.Date.parse(val); + if(format) + { + return Y.DataType.Date.format(val, {format:format}); + } + return val; + }, + + /** + * Constant used to generate unique id. + * + * @property GUID + * @type String + * @private + */ + GUID: "yuitimeaxis", + + /** + * Type of data used in `Axis`. + * + * @property _dataType + * @readOnly + * @private + */ + _dataType: "time", + + /** + * Gets an array of values based on a key. + * + * @method _getKeyArray + * @param {String} key Value key associated with the data array. + * @param {Array} data Array in which the data resides. + * @return Array + * @private + */ + _getKeyArray: function(key, data) + { + var obj, + keyArray = [], + i = 0, + val, + len = data.length; + for(; i < len; ++i) + { + obj = data[i][key]; + if(Y_Lang.isDate(obj)) + { + val = obj.valueOf(); + } + else + { + val = new Date(obj); + if(Y_Lang.isDate(val)) + { + val = val.valueOf(); + } + else if(!Y_Lang.isNumber(obj)) + { + if(Y_Lang.isNumber(parseFloat(obj))) + { + val = parseFloat(obj); + } + else + { + if(typeof obj !== "string") + { + obj = obj; + } + val = new Date(obj).valueOf(); + } + } + else + { + val = obj; + } + } + keyArray[i] = val; + } + return keyArray; + }, + + /** + * Calculates the maximum and minimum values for the `Axis`. + * + * @method _updateMinAndMax + * @private + */ + _updateMinAndMax: function() + { + var data = this.get("data"), + max = 0, + min = 0, + len, + num, + i; + if(data && data.length && data.length > 0) + { + len = data.length; + max = min = data[0]; + if(len > 1) + { + for(i = 1; i < len; i++) + { + num = data[i]; + if(isNaN(num)) + { + continue; + } + max = Math.max(num, max); + min = Math.min(num, min); + } + } + } + this._dataMaximum = max; + this._dataMinimum = min; + }, + + /** + * Returns a coordinate corresponding to a data values. + * + * @method _getCoordFromValue + * @param {Number} min The minimum for the axis. + * @param {Number} max The maximum for the axis. + * @param {Number} length The distance that the axis spans. + * @param {Number} dataValue A value used to ascertain the coordinate. + * @param {Number} offset Value in which to offset the coordinates. + * @param {Boolean} reverse Indicates whether the coordinates should start from + * the end of an axis. Only used in the numeric implementation. + * @return Number + * @private + */ + _getCoordFromValue: function(min, max, length, dataValue, offset) + { + var range, + multiplier, + valuecoord, + isNumber = Y_Lang.isNumber; + dataValue = this._getNumber(dataValue); + if(isNumber(dataValue)) + { + range = max - min; + multiplier = length/range; + valuecoord = (dataValue - min) * multiplier; + valuecoord = offset + valuecoord; + } + else + { + valuecoord = NaN; + } + return valuecoord; + }, + + /** + * Parses value into a number. + * + * @method _getNumber + * @param val {Object} Value to parse into a number + * @return Number + * @private + */ + _getNumber: function(val) + { + if(Y_Lang.isDate(val)) + { + val = val.valueOf(); + } + else if(!Y_Lang.isNumber(val) && val) + { + val = new Date(val).valueOf(); + } + + return val; + } +}; + +Y.TimeImpl = TimeImpl; + +/** + * TimeAxisBase manages time data for an axis. + * + * @class TimeAxisBase + * @extends AxisBase + * @uses TimeImpl + * @constructor + * @param {Object} config (optional) Configuration parameters. + * @submodule axis-time-base + */ +Y.TimeAxisBase = Y.Base.create("timeAxisBase", Y.AxisBase, [Y.TimeImpl]); + + +}, '@VERSION@', {"requires": ["axis-base"]});