123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
- /**
- * @fileOverview 时间数据作为分类类型
- * @author dxq613@gmail.com
- */
- var Base = require('./base');
- var Category = require('./category');
- var fecha = require('fecha');
- var catAuto = require('./auto/cat');
- var TimeUtil = require('./time-util');
- var each = require('@antv/util/lib/each');
- var isNumber = require('@antv/util/lib/type/is-number');
- var isObject = require('@antv/util/lib/type/is-object');
- var isString = require('@antv/util/lib/type/is-string');
- /**
- * 度量的构造函数
- * @class Scale.TimeCategory
- */
- var TimeCategory =
- /*#__PURE__*/
- function (_Category) {
- _inheritsLoose(TimeCategory, _Category);
- function TimeCategory() {
- return _Category.apply(this, arguments) || this;
- }
- var _proto = TimeCategory.prototype;
- _proto._initDefaultCfg = function _initDefaultCfg() {
- _Category.prototype._initDefaultCfg.call(this);
- this.type = 'timeCat';
- /**
- * 是否需要排序,默认进行排序
- * @type {Boolean}
- */
- this.sortable = true;
- this.tickCount = 5;
- /**
- * 时间格式化
- * @type {String}
- */
- this.mask = 'YYYY-MM-DD';
- };
- _proto.init = function init() {
- var self = this;
- var values = this.values; // 针对时间分类类型,会将时间统一转换为时间戳
- each(values, function (v, i) {
- values[i] = self._toTimeStamp(v);
- });
- if (this.sortable) {
- // 允许排序
- values.sort(function (v1, v2) {
- return v1 - v2;
- });
- }
- if (!self.ticks) {
- self.ticks = this.calculateTicks();
- }
- }
- /**
- * 计算 ticks
- * @return {array} 返回 ticks 数组
- */
- ;
- _proto.calculateTicks = function calculateTicks() {
- var self = this;
- var count = self.tickCount;
- var ticks;
- if (count) {
- var temp = catAuto({
- maxCount: count,
- data: self.values,
- isRounding: self.isRounding
- });
- ticks = temp.ticks;
- } else {
- ticks = self.values;
- }
- return ticks;
- }
- /**
- * @override
- */
- ;
- _proto.translate = function translate(value) {
- value = this._toTimeStamp(value);
- var index = this.values.indexOf(value);
- if (index === -1) {
- if (isNumber(value) && value < this.values.length) {
- index = value;
- } else {
- index = NaN;
- }
- }
- return index;
- }
- /**
- * @override
- */
- ;
- _proto.scale = function scale(value) {
- var rangeMin = this.rangeMin();
- var rangeMax = this.rangeMax();
- var index = this.translate(value);
- var percent;
- if (this.values.length === 1 || isNaN(index)) {
- // is index is NAN should not be set as 0
- percent = index;
- } else if (index > -1) {
- percent = index / (this.values.length - 1);
- } else {
- percent = 0;
- }
- return rangeMin + percent * (rangeMax - rangeMin);
- }
- /**
- * @override
- */
- ;
- _proto.getText = function getText(value) {
- var result = '';
- var index = this.translate(value);
- if (index > -1) {
- result = this.values[index];
- } else {
- result = value;
- }
- var formatter = this.formatter;
- result = parseInt(result, 10);
- result = formatter ? formatter(result) : fecha.format(result, this.mask);
- return result;
- }
- /**
- * @override
- */
- ;
- _proto.getTicks = function getTicks() {
- var self = this;
- var ticks = this.ticks;
- var rst = [];
- each(ticks, function (tick) {
- var obj;
- if (isObject(tick)) {
- obj = tick;
- } else {
- obj = {
- text: isString(tick) ? tick : self.getText(tick),
- value: self.scale(tick),
- tickValue: tick // 用于坐标轴上文本动画时确定前后帧的对应关系
- };
- }
- rst.push(obj);
- });
- return rst;
- } // 将时间转换为时间戳
- ;
- _proto._toTimeStamp = function _toTimeStamp(value) {
- return TimeUtil.toTimeStamp(value);
- };
- return TimeCategory;
- }(Category);
- Base.TimeCat = TimeCategory;
- module.exports = TimeCategory;
|