NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2/esm/geometry/path.js

93 lines
3.4 KiB
Java
Raw Normal View History

2023-09-14 14:47:11 +08:00
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 实例对于 PathLineArea一组数据对应一个 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