time.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { __extends } from "tslib";
  2. import { each, isDate, isNil, isNumber, isString } from '@antv/util';
  3. import { timeFormat, toTimeStamp } from '../util/time';
  4. import Linear from './linear';
  5. /**
  6. * 时间度量
  7. * @class
  8. */
  9. var 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));
  98. export default Time;
  99. //# sourceMappingURL=time.js.map