base.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 base_1 = require("../base");
  6. /**
  7. * 连续度量的基类
  8. * @class
  9. */
  10. var Continuous = /** @class */ (function (_super) {
  11. tslib_1.__extends(Continuous, _super);
  12. function Continuous() {
  13. var _this = _super !== null && _super.apply(this, arguments) || this;
  14. _this.isContinuous = true;
  15. return _this;
  16. }
  17. Continuous.prototype.scale = function (value) {
  18. if (util_1.isNil(value)) {
  19. return NaN;
  20. }
  21. var rangeMin = this.rangeMin();
  22. var rangeMax = this.rangeMax();
  23. var max = this.max;
  24. var min = this.min;
  25. if (max === min) {
  26. return rangeMin;
  27. }
  28. var percent = this.getScalePercent(value);
  29. return rangeMin + percent * (rangeMax - rangeMin);
  30. };
  31. Continuous.prototype.init = function () {
  32. _super.prototype.init.call(this);
  33. // init 完成后保证 min, max 包含 ticks 的范围
  34. var ticks = this.ticks;
  35. var firstTick = util_1.head(ticks);
  36. var lastTick = util_1.last(ticks);
  37. if (firstTick < this.min) {
  38. this.min = firstTick;
  39. }
  40. if (lastTick > this.max) {
  41. this.max = lastTick;
  42. }
  43. // strict-limit 方式
  44. if (!util_1.isNil(this.minLimit)) {
  45. this.min = firstTick;
  46. }
  47. if (!util_1.isNil(this.maxLimit)) {
  48. this.max = lastTick;
  49. }
  50. };
  51. Continuous.prototype.setDomain = function () {
  52. var _a = util_1.getRange(this.values), min = _a.min, max = _a.max;
  53. if (util_1.isNil(this.min)) {
  54. this.min = min;
  55. }
  56. if (util_1.isNil(this.max)) {
  57. this.max = max;
  58. }
  59. if (this.min > this.max) {
  60. this.min = min;
  61. this.max = max;
  62. }
  63. };
  64. Continuous.prototype.calculateTicks = function () {
  65. var _this = this;
  66. var ticks = _super.prototype.calculateTicks.call(this);
  67. if (!this.nice) {
  68. ticks = util_1.filter(ticks, function (tick) {
  69. return tick >= _this.min && tick <= _this.max;
  70. });
  71. }
  72. return ticks;
  73. };
  74. // 计算原始值值占的百分比
  75. Continuous.prototype.getScalePercent = function (value) {
  76. var max = this.max;
  77. var min = this.min;
  78. return (value - min) / (max - min);
  79. };
  80. Continuous.prototype.getInvertPercent = function (value) {
  81. return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());
  82. };
  83. return Continuous;
  84. }(base_1.default));
  85. exports.default = Continuous;
  86. //# sourceMappingURL=base.js.map