UNPKG

cione-comp-lib

Version:

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

120 lines (119 loc) 4.79 kB
import { __extends } from "../../../../tslib/tslib.es6.mjs"; import { bind, extend, each, map } from "../../../../zrender/lib/core/util.mjs"; import AxisBuilder from "./AxisBuilder.mjs"; import BrushController from "../helper/BrushController.mjs"; import { makeRectPanelClipPath, makeRectIsTargetByCursor, makeLinearBrushOtherExtent } from "../helper/brushHelper.mjs"; import { groupTransition } from "../../util/graphic.mjs"; import ComponentView from "../../view/Component.mjs"; import Group from "../../../../zrender/lib/graphic/Group.mjs"; import BoundingRect from "../../../../zrender/lib/core/BoundingRect.mjs"; var elementList = ["axisLine", "axisTickLabel", "axisName"]; var ParallelAxisView = function(_super) { __extends(ParallelAxisView2, _super); function ParallelAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelAxisView2.type; return _this; } ParallelAxisView2.prototype.init = function(ecModel, api) { _super.prototype.init.apply(this, arguments); (this._brushController = new BrushController(api.getZr())).on("brush", bind(this._onBrush, this)); }; ParallelAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { if (fromAxisAreaSelect(axisModel, ecModel, payload)) { return; } this.axisModel = axisModel; this.api = api; this.group.removeAll(); var oldAxisGroup = this._axisGroup; this._axisGroup = new Group(); this.group.add(this._axisGroup); if (!axisModel.get("show")) { return; } var coordSysModel = getCoordSysModel(axisModel, ecModel); var coordSys = coordSysModel.coordinateSystem; var areaSelectStyle = axisModel.getAreaSelectStyle(); var areaWidth = areaSelectStyle.width; var dim = axisModel.axis.dim; var axisLayout = coordSys.getAxisLayout(dim); var builderOpt = extend({ strokeContainThreshold: areaWidth }, axisLayout); var axisBuilder = new AxisBuilder(axisModel, builderOpt); each(elementList, axisBuilder.add, axisBuilder); this._axisGroup.add(axisBuilder.getGroup()); this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api); groupTransition(oldAxisGroup, this._axisGroup, axisModel); }; ParallelAxisView2.prototype._refreshBrushController = function(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) { var extent = axisModel.axis.getExtent(); var extentLen = extent[1] - extent[0]; var extra = Math.min(30, Math.abs(extentLen) * 0.1); var rect = BoundingRect.create({ x: extent[0], y: -areaWidth / 2, width: extentLen, height: areaWidth }); rect.x -= extra; rect.width += 2 * extra; this._brushController.mount({ enableGlobalPan: true, rotation: builderOpt.rotation, x: builderOpt.position[0], y: builderOpt.position[1] }).setPanels([{ panelId: "pl", clipPath: makeRectPanelClipPath(rect), isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel), getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0) }]).enableBrush({ brushType: "lineX", brushStyle: areaSelectStyle, removeOnClick: true }).updateCovers(getCoverInfoList(axisModel)); }; ParallelAxisView2.prototype._onBrush = function(eventParam) { var coverInfoList = eventParam.areas; var axisModel = this.axisModel; var axis = axisModel.axis; var intervals = map(coverInfoList, function(coverInfo) { return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)]; }); if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) { this.api.dispatchAction({ type: "axisAreaSelect", parallelAxisId: axisModel.id, intervals }); } }; ParallelAxisView2.prototype.dispose = function() { this._brushController.dispose(); }; ParallelAxisView2.type = "parallelAxis"; return ParallelAxisView2; }(ComponentView); function fromAxisAreaSelect(axisModel, ecModel, payload) { return payload && payload.type === "axisAreaSelect" && ecModel.findComponents({ mainType: "parallelAxis", query: payload })[0] === axisModel; } function getCoverInfoList(axisModel) { var axis = axisModel.axis; return map(axisModel.activeIntervals, function(interval) { return { brushType: "lineX", panelId: "pl", range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)] }; }); } function getCoordSysModel(axisModel, ecModel) { return ecModel.getComponent("parallel", axisModel.get("parallelIndex")); } var ParallelAxisView$1 = ParallelAxisView; export { ParallelAxisView$1 as default };