cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
110 lines (109 loc) • 4.82 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import BoundingRect from "../../../../zrender/lib/core/BoundingRect.mjs";
import Cartesian from "./Cartesian.mjs";
import { invert } from "../../../../zrender/lib/core/matrix.mjs";
import { applyTransform } from "../../../../zrender/lib/core/vector.mjs";
var cartesian2DDimensions = ["x", "y"];
function canCalculateAffineTransform(scale) {
return scale.type === "interval" || scale.type === "time";
}
var Cartesian2D = function(_super) {
__extends(Cartesian2D2, _super);
function Cartesian2D2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = "cartesian2d";
_this.dimensions = cartesian2DDimensions;
return _this;
}
Cartesian2D2.prototype.calcAffineTransform = function() {
this._transform = this._invTransform = null;
var xAxisScale = this.getAxis("x").scale;
var yAxisScale = this.getAxis("y").scale;
if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {
return;
}
var xScaleExtent = xAxisScale.getExtent();
var yScaleExtent = yAxisScale.getExtent();
var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);
var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);
var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];
var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];
if (!xScaleSpan || !yScaleSpan) {
return;
}
var scaleX = (end[0] - start[0]) / xScaleSpan;
var scaleY = (end[1] - start[1]) / yScaleSpan;
var translateX = start[0] - xScaleExtent[0] * scaleX;
var translateY = start[1] - yScaleExtent[0] * scaleY;
var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];
this._invTransform = invert([], m);
};
Cartesian2D2.prototype.getBaseAxis = function() {
return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x");
};
Cartesian2D2.prototype.containPoint = function(point) {
var axisX = this.getAxis("x");
var axisY = this.getAxis("y");
return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));
};
Cartesian2D2.prototype.containData = function(data) {
return this.getAxis("x").containData(data[0]) && this.getAxis("y").containData(data[1]);
};
Cartesian2D2.prototype.containZone = function(data1, data2) {
var zoneDiag1 = this.dataToPoint(data1);
var zoneDiag2 = this.dataToPoint(data2);
var area = this.getArea();
var zone = new BoundingRect(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]);
return area.intersect(zone);
};
Cartesian2D2.prototype.dataToPoint = function(data, clamp, out) {
out = out || [];
var xVal = data[0];
var yVal = data[1];
if (this._transform && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) {
return applyTransform(out, data, this._transform);
}
var xAxis = this.getAxis("x");
var yAxis = this.getAxis("y");
out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp));
out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp));
return out;
};
Cartesian2D2.prototype.clampData = function(data, out) {
var xScale = this.getAxis("x").scale;
var yScale = this.getAxis("y").scale;
var xAxisExtent = xScale.getExtent();
var yAxisExtent = yScale.getExtent();
var x = xScale.parse(data[0]);
var y = yScale.parse(data[1]);
out = out || [];
out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));
out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));
return out;
};
Cartesian2D2.prototype.pointToData = function(point, clamp) {
var out = [];
if (this._invTransform) {
return applyTransform(out, point, this._invTransform);
}
var xAxis = this.getAxis("x");
var yAxis = this.getAxis("y");
out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp);
out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp);
return out;
};
Cartesian2D2.prototype.getOtherAxis = function(axis) {
return this.getAxis(axis.dim === "x" ? "y" : "x");
};
Cartesian2D2.prototype.getArea = function() {
var xExtent = this.getAxis("x").getGlobalExtent();
var yExtent = this.getAxis("y").getGlobalExtent();
var x = Math.min(xExtent[0], xExtent[1]);
var y = Math.min(yExtent[0], yExtent[1]);
var width = Math.max(xExtent[0], xExtent[1]) - x;
var height = Math.max(yExtent[0], yExtent[1]) - y;
return new BoundingRect(x, y, width, height);
};
return Cartesian2D2;
}(Cartesian);
export { cartesian2DDimensions, Cartesian2D as default };