time.js 3.3 KB

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