UNPKG

cione-comp-lib

Version:

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

136 lines (135 loc) 4.92 kB
import SingleAxis from "./SingleAxis.mjs"; import { createScaleByModel, niceScaleExtent } from "../axisHelper.mjs"; import { getLayoutRect } from "../../util/layout.mjs"; import { each } from "../../../../zrender/lib/core/util.mjs"; var singleDimensions = ["single"]; var Single = function() { function Single2(axisModel, ecModel, api) { this.type = "single"; this.dimension = "single"; this.dimensions = singleDimensions; this.axisPointerEnabled = true; this.model = axisModel; this._init(axisModel, ecModel, api); } Single2.prototype._init = function(axisModel, ecModel, api) { var dim = this.dimension; var axis = new SingleAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisModel.get("position")); var isCategory = axis.type === "category"; axis.onBand = isCategory && axisModel.get("boundaryGap"); axis.inverse = axisModel.get("inverse"); axis.orient = axisModel.get("orient"); axisModel.axis = axis; axis.model = axisModel; axis.coordinateSystem = this; this._axis = axis; }; Single2.prototype.update = function(ecModel, api) { ecModel.eachSeries(function(seriesModel) { if (seriesModel.coordinateSystem === this) { var data_1 = seriesModel.getData(); each(data_1.mapDimensionsAll(this.dimension), function(dim) { this._axis.scale.unionExtentFromData(data_1, dim); }, this); niceScaleExtent(this._axis.scale, this._axis.model); } }, this); }; Single2.prototype.resize = function(axisModel, api) { this._rect = getLayoutRect({ left: axisModel.get("left"), top: axisModel.get("top"), right: axisModel.get("right"), bottom: axisModel.get("bottom"), width: axisModel.get("width"), height: axisModel.get("height") }, { width: api.getWidth(), height: api.getHeight() }); this._adjustAxis(); }; Single2.prototype.getRect = function() { return this._rect; }; Single2.prototype._adjustAxis = function() { var rect = this._rect; var axis = this._axis; var isHorizontal = axis.isHorizontal(); var extent = isHorizontal ? [0, rect.width] : [0, rect.height]; var idx = axis.inverse ? 1 : 0; axis.setExtent(extent[idx], extent[1 - idx]); this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); }; Single2.prototype._updateAxisTransform = function(axis, coordBase) { var axisExtent = axis.getExtent(); var extentSum = axisExtent[0] + axisExtent[1]; var isHorizontal = axis.isHorizontal(); axis.toGlobalCoord = isHorizontal ? function(coord) { return coord + coordBase; } : function(coord) { return extentSum - coord + coordBase; }; axis.toLocalCoord = isHorizontal ? function(coord) { return coord - coordBase; } : function(coord) { return extentSum - coord + coordBase; }; }; Single2.prototype.getAxis = function() { return this._axis; }; Single2.prototype.getBaseAxis = function() { return this._axis; }; Single2.prototype.getAxes = function() { return [this._axis]; }; Single2.prototype.getTooltipAxes = function() { return { baseAxes: [this.getAxis()], otherAxes: [] }; }; Single2.prototype.containPoint = function(point) { var rect = this.getRect(); var axis = this.getAxis(); var orient = axis.orient; if (orient === "horizontal") { return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height; } else { return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height; } }; Single2.prototype.pointToData = function(point) { var axis = this.getAxis(); return [axis.coordToData(axis.toLocalCoord(point[axis.orient === "horizontal" ? 0 : 1]))]; }; Single2.prototype.dataToPoint = function(val) { var axis = this.getAxis(); var rect = this.getRect(); var pt = []; var idx = axis.orient === "horizontal" ? 0 : 1; if (val instanceof Array) { val = val[0]; } pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2; return pt; }; Single2.prototype.convertToPixel = function(ecModel, finder, value) { var coordSys = getCoordSys(finder); return coordSys === this ? this.dataToPoint(value) : null; }; Single2.prototype.convertFromPixel = function(ecModel, finder, pixel) { var coordSys = getCoordSys(finder); return coordSys === this ? this.pointToData(pixel) : null; }; return Single2; }(); function getCoordSys(finder) { var seriesModel = finder.seriesModel; var singleModel = finder.singleAxisModel; return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; } export { Single as default, singleDimensions };