12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- export default function(G6) {
- G6.registerBehavior('dragPoint', {
- getDefaultCfg() {
- return {
- updateEdge: true,
- delegate: true,
- delegateStyle: {},
- dragEdge: false,
- };
- },
- getEvents() {
- return {
- 'controlPoint:dragstart': 'onDragStart',
- 'controlPoint:drag': 'onDrag',
- 'controlPoint:dragend': 'onDragEnd',
- };
- },
- onDragStart(e) {
- const node = e.target.getParent().getParent().get('item');
- const anchorIndex = e.item.get('index');
- this.target = e.item;
- this.origin = {
- x: e.x,
- y: e.y,
- sourceNode: node,
- sourceAnchor: anchorIndex,
- };
- this.graph.set('edgeDragging', true);
- },
- onDrag(e) {
- if (!this.origin) {
- return;
- }
- const node = e.target.getParent().getParent().get('item');
- const anchorIndex = e.item.get('index');
- const model = node.getModel();
- const currentWidth = model.size[0];
- const currentHeight = model.size[1];
- const addWidth = e.x - this.origin.x;
- const addHeight = e.y - this.origin.y;
- let width = currentWidth;
- let height = currentHeight;
- // 0,0 // 两个都是负的变大
- // 1,0 // 一正 一负 变大
- // 1,1 // 两个都是负变大
- // 0,1 // 一负 一正 变大
- const pointIndex = this.origin.sourceAnchor;
- if (pointIndex === 0) {
- width = currentWidth - addWidth;
- height = currentHeight - addHeight;
- } else if (pointIndex === 1) {
- height = currentHeight - addHeight;
- } else if (pointIndex === 2) {
- width = currentWidth + addWidth;
- height = currentHeight - addHeight;
- } else if (pointIndex === 3) {
- width = currentWidth + addWidth;
- } else if (pointIndex === 4) {
- width = currentWidth + addWidth;
- height = currentHeight + addHeight;
- } else if (pointIndex === 5) {
- height = currentHeight + addHeight;
- } else if (pointIndex === 6) {
- width = currentWidth - addWidth;
- height = currentHeight + addHeight;
- } else if (pointIndex === 7) {
- width = currentWidth - addWidth;
- }
- const group = node.getContainer();
- // 移动过程中的控制点全部隐藏。
- group.controlPointShapes.forEach(a => a.hide());
- this.graph.updateItem(node, { size: [width, height], });
- this.origin = {
- x: e.x,
- y: e.y,
- sourceNode: node,
- sourceAnchor: anchorIndex,
- };
- },
- onDragEnd(e) {
- if (!this.origin) {
- return;
- }
- const node = e.target.getParent().getParent().get('item');
- this.target = null;
- this.origin = null;
- const group = node.getContainer();
- group.clearControlPoints(group);
- group.showControlPoints(group);
- this.graph.set('edgeDragging', false);
- },
- });
- }
|