NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2/esm/geometry/path.js
2023-09-14 14:47:11 +08:00

93 lines
3.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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