NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/scale/lib/time.js
2023-09-14 14:47:11 +08:00

155 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;