UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

110 lines (109 loc) 4.82 kB
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 };