UNPKG

3.27 kBJavaScriptView Raw
1import { __extends } from "tslib";
2import { each, isDate, isNil, isNumber, isString } from '@antv/util';
3import { timeFormat, toTimeStamp } from '../util/time';
4import Linear from './linear';
5/**
6 * 时间度量
7 * @class
8 */
9var Time = /** @class */ (function (_super) {
10 __extends(Time, _super);
11 function Time() {
12 var _this = _super !== null && _super.apply(this, arguments) || this;
13 _this.type = 'time';
14 return _this;
15 }
16 /**
17 * @override
18 */
19 Time.prototype.getText = function (value, index) {
20 var numberValue = this.translate(value);
21 var formatter = this.formatter;
22 return formatter ? formatter(numberValue, index) : timeFormat(numberValue, this.mask);
23 };
24 /**
25 * @override
26 */
27 Time.prototype.scale = function (value) {
28 var v = value;
29 if (isString(v) || isDate(v)) {
30 v = this.translate(v);
31 }
32 return _super.prototype.scale.call(this, v);
33 };
34 /**
35 * 将时间转换成数字
36 * @override
37 */
38 Time.prototype.translate = function (v) {
39 return toTimeStamp(v);
40 };
41 Time.prototype.initCfg = function () {
42 this.tickMethod = 'time-pretty';
43 this.mask = 'YYYY-MM-DD';
44 this.tickCount = 7;
45 this.nice = false;
46 };
47 Time.prototype.setDomain = function () {
48 var values = this.values;
49 // 是否设置了 min, max,而不是直接取 this.min, this.max
50 var minConfig = this.getConfig('min');
51 var maxConfig = this.getConfig('max');
52 // 如果设置了 min,max 则转换成时间戳
53 if (!isNil(minConfig) || !isNumber(minConfig)) {
54 this.min = this.translate(this.min);
55 }
56 if (!isNil(maxConfig) || !isNumber(maxConfig)) {
57 this.max = this.translate(this.max);
58 }
59 // 没有设置 min, max 时
60 if (values && values.length) {
61 // 重新计算最大最小值
62 var timeStamps_1 = [];
63 var min_1 = Infinity; // 最小值
64 var secondMin_1 = min_1; // 次小值
65 var max_1 = 0;
66 // 使用一个循环,计算min,max,secondMin
67 each(values, function (v) {
68 var timeStamp = toTimeStamp(v);
69 if (isNaN(timeStamp)) {
70 throw new TypeError("Invalid Time: " + v + " in time scale!");
71 }
72 if (min_1 > timeStamp) {
73 secondMin_1 = min_1;
74 min_1 = timeStamp;
75 }
76 else if (secondMin_1 > timeStamp) {
77 secondMin_1 = timeStamp;
78 }
79 if (max_1 < timeStamp) {
80 max_1 = timeStamp;
81 }
82 timeStamps_1.push(timeStamp);
83 });
84 // 存在多个值时,设置最小间距
85 if (values.length > 1) {
86 this.minTickInterval = secondMin_1 - min_1;
87 }
88 if (isNil(minConfig)) {
89 this.min = min_1;
90 }
91 if (isNil(maxConfig)) {
92 this.max = max_1;
93 }
94 }
95 };
96 return Time;
97}(Linear));
98export default Time;
99//# sourceMappingURL=time.js.map
\No newline at end of file