import { __extends } from "tslib"; import { FIELD_ORIGIN } from '../constant'; import Geometry from './base'; import Element from './element'; /** 引入对应的 ShapeFactory */ import './shape/line'; import { isModelChange } from './util/is-model-change'; /** * Path 几何标记。 * 用于绘制路径图等。 */ var Path = /** @class */ (function (_super) { __extends(Path, _super); function Path(cfg) { var _this = _super.call(this, cfg) || this; _this.type = 'path'; _this.shapeType = 'line'; var _a = cfg.connectNulls, connectNulls = _a === void 0 ? false : _a; _this.connectNulls = connectNulls; return _this; } /** * 创建所有的 Element 实例,对于 Path、Line、Area,一组数据对应一个 Element。 * @param mappingData * @param [isUpdate] * @returns elements */ Path.prototype.createElements = function (mappingData, index, isUpdate) { if (isUpdate === void 0) { isUpdate = false; } // Path 的每个 element 对应一组数据 var _a = this, lastElementsMap = _a.lastElementsMap, elementsMap = _a.elementsMap, elements = _a.elements, container = _a.container; var elementId = this.getElementId(mappingData); var shapeCfg = this.getShapeInfo(mappingData); var result = lastElementsMap[elementId]; if (!result) { var shapeFactory = this.getShapeFactory(); result = new Element({ shapeFactory: shapeFactory, container: container, offscreenGroup: this.getOffscreenGroup(), }); result.geometry = this; result.animate = this.animateOption; result.draw(shapeCfg, isUpdate); // 绘制 shape } else { // element 已经创建 var preShapeCfg = result.getModel(); if (this.isCoordinateChanged || isModelChange(preShapeCfg, shapeCfg)) { result.animate = this.animateOption; // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射 result.update(shapeCfg); // 更新对应的 element } delete lastElementsMap[elementId]; } elements.push(result); elementsMap[elementId] = result; return elements; }; /** * 获取组成一条线(一组数据)的所有点以及数据 * @param mappingData 映射后的数组 */ Path.prototype.getPointsAndData = function (mappingData) { var points = []; var data = []; for (var i = 0, len = mappingData.length; i < len; i++) { var obj = mappingData[i]; points.push({ x: obj.x, y: obj.y, }); data.push(obj[FIELD_ORIGIN]); } return { points: points, data: data, }; }; Path.prototype.getShapeInfo = function (mappingData) { var shapeCfg = this.getDrawCfg(mappingData[0]); var _a = this.getPointsAndData(mappingData), points = _a.points, data = _a.data; shapeCfg.mappingData = mappingData; shapeCfg.data = data; shapeCfg.isStack = !!this.getAdjust('stack'); shapeCfg.points = points; shapeCfg.connectNulls = this.connectNulls; return shapeCfg; }; return Path; }(Geometry)); export default Path; //# sourceMappingURL=path.js.map