bug修复
This commit is contained in:
+16
-4
@@ -9,14 +9,15 @@ export class Behavior {
|
||||
this.engine = engine;
|
||||
this.graphInstance = graphInstance;
|
||||
|
||||
const interactionOptions = this.engine.interactionOptions;
|
||||
const interactionOptions = this.engine.interactionOptions,
|
||||
selectNode: boolean | string[] = interactionOptions.selectNode;
|
||||
|
||||
if(interactionOptions.dragNode) {
|
||||
this.initDragNode();
|
||||
}
|
||||
|
||||
if(interactionOptions.selectNode) {
|
||||
this.initSelectNode();
|
||||
this.initSelectNode(selectNode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,16 +68,27 @@ export class Behavior {
|
||||
|
||||
/**
|
||||
* 初始化节/边选中
|
||||
* @param selectNode
|
||||
*/
|
||||
private initSelectNode() {
|
||||
private initSelectNode(selectNode: boolean | string[]) {
|
||||
let defaultHighlightColor = '#f08a5d',
|
||||
curSelectItem = null,
|
||||
curSelectItemStyle = null;
|
||||
|
||||
if(selectNode === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
const selectCallback = ev => {
|
||||
const item = ev.item,
|
||||
model = item.getModel(),
|
||||
type = item.getType(),
|
||||
highlightColor = item.getModel().style.selectedColor;
|
||||
name = model.modelName,
|
||||
highlightColor = model.style.selectedColor;
|
||||
|
||||
if(Array.isArray(selectNode) && selectNode.find(item => item === name) === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(curSelectItem && curSelectItem !== item) {
|
||||
curSelectItem.update({
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { Util } from "../Common/util";
|
||||
import { Engine } from "../engine";
|
||||
import { ConstructedData } from "../Model/modelConstructor";
|
||||
import { Element, Model, Pointer } from "../Model/modelData";
|
||||
@@ -71,7 +70,7 @@ export class Layouter {
|
||||
modelList.forEach(item => {
|
||||
item.G6Item = item.shadowG6Item;
|
||||
|
||||
if(item.type === 'element' || item.type === 'pointer') {
|
||||
if(item.modelType === 'element' || item.modelType === 'pointer') {
|
||||
item.set('rotation', item.get('rotation'));
|
||||
item.set({ x: 0, y: 0 });
|
||||
}
|
||||
|
||||
+50
-23
@@ -37,28 +37,7 @@ export class Renderer {
|
||||
|
||||
const enable: boolean = this.engine.animationOptions.enable === undefined? true: this.engine.animationOptions.enable,
|
||||
duration: number = this.engine.animationOptions.duration,
|
||||
timingFunction: string = this.engine.animationOptions.timingFunction,
|
||||
interactionOptions = this.engine.interactionOptions;
|
||||
|
||||
const modeMap = {
|
||||
drag: 'drag-canvas',
|
||||
zoom: 'zoom-canvas',
|
||||
dragNode: {
|
||||
type: 'drag-node',
|
||||
shouldBegin: n => {
|
||||
// 不允许拖拽外部指针
|
||||
if (n.item && n.item.getModel().modelType === 'pointer') return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
},
|
||||
defaultModes = [];
|
||||
|
||||
Object.keys(interactionOptions).forEach(item => {
|
||||
if(interactionOptions[item] === true && modeMap[item] !== undefined) {
|
||||
defaultModes.push(modeMap[item]);
|
||||
}
|
||||
});
|
||||
timingFunction: string = this.engine.animationOptions.timingFunction;
|
||||
|
||||
this.graphInstance = new SV.G6.Graph({
|
||||
container: DOMContainer,
|
||||
@@ -71,7 +50,7 @@ export class Renderer {
|
||||
},
|
||||
fitView: this.engine.layoutOptions.fitView,
|
||||
modes: {
|
||||
default: defaultModes
|
||||
default: this.initBehaviors()
|
||||
}
|
||||
});
|
||||
|
||||
@@ -82,6 +61,54 @@ export class Renderer {
|
||||
this.animations = new Animations(duration, timingFunction);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化交互行为
|
||||
* @returns
|
||||
*/
|
||||
private initBehaviors() {
|
||||
const interactionOptions = this.engine.interactionOptions,
|
||||
dragNode: boolean | string[] = interactionOptions.dragNode,
|
||||
dragNodeFilter = node => {
|
||||
let model = node.item.getModel();
|
||||
|
||||
if(node.item === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(model.modelType === 'pointer') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(typeof dragNode === 'boolean') {
|
||||
return dragNode;
|
||||
}
|
||||
|
||||
if(Array.isArray(dragNode) && dragNode.indexOf(model.modelName) > -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const modeMap = {
|
||||
drag: 'drag-canvas',
|
||||
zoom: 'zoom-canvas',
|
||||
dragNode: {
|
||||
type: 'drag-node',
|
||||
shouldBegin: node => dragNodeFilter(node)
|
||||
}
|
||||
},
|
||||
defaultModes = [];
|
||||
|
||||
Object.keys(interactionOptions).forEach(item => {
|
||||
if(interactionOptions[item] && modeMap[item] !== undefined) {
|
||||
defaultModes.push(modeMap[item]);
|
||||
}
|
||||
});
|
||||
|
||||
return defaultModes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对比上一次和该次 G6Data 找出新添加的节点和边
|
||||
* @param prevData
|
||||
|
||||
Reference in New Issue
Block a user