NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/scale/lib/time.js

155 lines
3.3 KiB
JavaScript
Raw Normal View History

2023-09-14 14:47:11 +08:00
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
/**
* @fileOverview The measurement of linear data scale function
* @author dxq613@gmail.com
*/
var fecha = require('fecha');
var each = require('@antv/util/lib/each');
var isNil = require('@antv/util/lib/type/is-nil');
var isString = require('@antv/util/lib/type/is-string');
var Base = require('./base');
var Linear = require('./linear');
var timeAuto = require('./auto/time');
var TimeUtil = require('./time-util');
/**
* 时间度量的构造函数
* @class Scale.Time
*/
var Time = /*#__PURE__*/function (_Linear) {
_inheritsLoose(Time, _Linear);
function Time() {
return _Linear.apply(this, arguments) || this;
}
var _proto = Time.prototype;
_proto._initDefaultCfg = function _initDefaultCfg() {
_Linear.prototype._initDefaultCfg.call(this);
this.type = 'time';
this.mask = 'YYYY-MM-DD';
}
/**
* @override
*/
;
_proto.init = function init() {
var self = this;
var values = self.values;
if (values && values.length) {
// 重新计算最大最小值
var timeStamps = [];
var min = Infinity; // 最小值
var secondMin = min; // 次小值
var max = 0; // 使用一个循环计算min,max,secondMin
each(values, function (v) {
var timeStamp = self._toTimeStamp(v);
if (isNaN(timeStamp)) {
throw new TypeError("Invalid Time: " + v);
}
if (min > timeStamp) {
secondMin = min;
min = timeStamp;
} else if (secondMin > timeStamp) {
secondMin = timeStamp;
}
if (max < timeStamp) {
max = timeStamp;
}
timeStamps.push(timeStamp);
}); // 存在多个值时,设置最小间距
if (values.length > 1) {
self.minTickInterval = secondMin - min;
}
if (isNil(self.min) || self._toTimeStamp(self.min) > min) {
self.min = min;
}
if (isNil(self.max) || self._toTimeStamp(self.max) < max) {
self.max = max;
}
}
_Linear.prototype.init.call(this);
};
_proto.calculateTicks = function calculateTicks() {
var self = this;
var min = self.min;
var max = self.max;
var count = self.tickCount;
var interval = self.tickInterval;
var tmp = timeAuto({
min: min,
max: max,
minCount: count,
maxCount: count,
interval: interval,
minInterval: self.minTickInterval
});
return tmp.ticks;
}
/**
* @override
*/
;
_proto.getText = function getText(value) {
var formatter = this.formatter;
value = this.translate(value);
value = formatter ? formatter(value) : fecha.format(value, this.mask);
return value;
}
/**
* @override
*/
;
_proto.scale = function scale(value) {
if (isString(value)) {
value = this.translate(value);
}
return _Linear.prototype.scale.call(this, value);
}
/**
* @override
*/
;
_proto.translate = function translate(value) {
return this._toTimeStamp(value);
} // 将时间转换为时间戳
;
_proto._toTimeStamp = function _toTimeStamp(value) {
return TimeUtil.toTimeStamp(value);
};
return Time;
}(Linear);
Base.Time = Time;
module.exports = Time;