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

95 lines
3.6 KiB
Java
Raw Normal View History

2023-09-14 14:47:11 +08:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var constant_1 = require("../constant");
var base_1 = tslib_1.__importDefault(require("./base"));
var element_1 = tslib_1.__importDefault(require("./element"));
/** 引入对应的 ShapeFactory */
require("./shape/line");
var is_model_change_1 = require("./util/is-model-change");
/**
* Path 几何标记
* 用于绘制路径图等
*/
var Path = /** @class */ (function (_super) {
tslib_1.__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_1.default({
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 || is_model_change_1.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[constant_1.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;
}(base_1.default));
exports.default = Path;
//# sourceMappingURL=path.js.map