NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2/lib/interaction/shape-select.js
2023-09-14 14:47:11 +08:00

136 lines
3.5 KiB
Java

function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Util = require('../util');
var Interaction = require('./base');
function getOriginalAttrs(attrs, styles) {
var origin = {};
for (var style in styles) {
origin[style] = attrs[style];
}
return origin;
}
var Select = /*#__PURE__*/function (_Interaction) {
_inheritsLoose(Select, _Interaction);
function Select() {
return _Interaction.apply(this, arguments) || this;
}
var _proto = Select.prototype;
_proto.getDefaultCfg = function getDefaultCfg() {
var defaultCfg = _Interaction.prototype.getDefaultCfg.call(this);
return Util.mix({}, defaultCfg, {
startEvent: 'mouseup',
processEvent: null,
selectStyle: {
fillOpacity: 1
},
unSelectStyle: {
fillOpacity: 0.1
},
cancelable: true
});
};
_proto.start = function start(ev) {
var self = this;
var chart = self.view;
var selectedShape;
var unSelectedShapes = [];
chart.eachShape(function (obj, shape) {
if (shape.isPointInPath(ev.x, ev.y)) {
selectedShape = shape;
} else {
unSelectedShapes.push(shape);
}
});
if (!selectedShape) {
self.reset();
return;
}
if (selectedShape.get('_selected')) {
// 已经被选中
if (!self.cancelable) {
// 不允许取消选中则不处理
return;
}
self.reset(); // 允许取消选中
} else {
// 未被选中
var selectStyle = self.selectStyle,
unSelectStyle = self.unSelectStyle; // 获取选中效果对应的本来效果,保存下来
var originAttrs = getOriginalAttrs(selectedShape.attr(), selectedShape);
selectedShape.set('_originAttrs', originAttrs);
selectedShape.attr(selectStyle);
Util.each(unSelectedShapes, function (child) {
var originAttrs = child.get('_originAttrs'); // 先恢复到默认状态下
if (originAttrs) {
child.attr(originAttrs);
}
child.set('_selected', false); // 保存未选中效果对应的原始效果
if (unSelectStyle) {
originAttrs = getOriginalAttrs(child.attr(), unSelectStyle);
child.set('_originAttrs', originAttrs);
child.attr(unSelectStyle);
}
});
selectedShape.set('_selected', true);
self.selectedShape = selectedShape;
self.canvas.draw();
}
};
_proto.end = function end(ev) {
var selectedShape = this.selectedShape;
if (selectedShape && !selectedShape.get('destroyed') && selectedShape.get('origin')) {
ev.data = selectedShape.get('origin')._origin; // 绘制数据,包含原始数据啊
ev.shapeInfo = selectedShape.get('origin');
ev.shape = selectedShape;
ev.selected = !!selectedShape.get('_selected'); // 返回选中的状态
}
};
_proto.reset = function reset() {
var self = this;
if (!self.selectedShape) {
return;
}
var chart = self.view;
var geom = chart.get('geoms')[0];
var container = geom.get('container').get('children')[0];
var children = container.get('children');
Util.each(children, function (child) {
var originAttrs = child.get('_originAttrs');
if (originAttrs) {
child._attrs = originAttrs;
child.set('_originAttrs', null);
}
child.set('_selected', false);
});
self.canvas.draw();
};
return Select;
}(Interaction);
module.exports = Select;