UNPKG

2.77 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var tslib_1 = require("tslib");
4var util_1 = require("@antv/util");
5var base_1 = require("../base");
6/**
7 * 连续度量的基类
8 * @class
9 */
10var 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));
85exports.default = Continuous;
86//# sourceMappingURL=base.js.map
\No newline at end of file