Merge branch 'branch_cjc4' into 'main'

修改边不能显示权值的bug(和释放指针时在边上显示free这个bug冲突,待解决)

See merge request phenomLi/StructV2!24
This commit is contained in:
chen jiancheng 2022-07-31 07:36:24 +00:00
commit 95265a3a9d
3 changed files with 36 additions and 14 deletions

View File

@ -7,6 +7,7 @@ import { SVNode } from './SVNode';
export class SVLink extends SVModel {
public node: SVNode;
public target: SVNode;
public label: string; //边的权值
public linkIndex: number;
public shadowG6Item: IEdge;
@ -23,15 +24,19 @@ export class SVLink extends SVModel {
node: SVNode,
target: SVNode,
index: number,
options: LinkOption
options: LinkOption,
label: string,
) {
super(id, type, group, layout, 'link');
console.log(id);
this.node = node;
this.target = target;
this.nodeId = node.id;
this.targetId = target.id;
this.linkIndex = index;
this.label = label; //边的权值
node.links.outDegree.push(this);
target.links.inDegree.push(this);
@ -49,11 +54,14 @@ export class SVLink extends SVModel {
if (options.targetAnchor && typeof options.targetAnchor === 'function' && this.linkIndex !== null) {
targetAnchor = options.targetAnchor(this.linkIndex);
}
let labelCfg = this.label? { position: 'middle', autoRotate: true, refY: 7, style: { fontSize: 20, opacity: 0.8 } }
: Util.objectClone<LinkLabelOption>(options.labelOptions || ({} as LinkLabelOption));
let label = this.target.sourceNode.freed ? 'freed' : '',
labelCfg = this.target.sourceNode.freed
? { position: 'start', autoRotate: true, refY: 7, style: { fontSize: 11, opacity: 0.8 } }
: Util.objectClone<LinkLabelOption>(options.labelOptions || ({} as LinkLabelOption));
// let label = this.target.sourceNode.freed ? 'freed' : '',
// labelCfg = this.target.sourceNode.freed
// ? { position: 'start', autoRotate: true, refY: 7, style: { fontSize: 11, opacity: 0.8 } }
// : Util.objectClone<LinkLabelOption>(options.labelOptions || ({} as LinkLabelOption));
return {
id: this.id,
@ -62,7 +70,7 @@ export class SVLink extends SVModel {
target: this.target.id,
sourceAnchor,
targetAnchor,
label,
label:this.label,
style: Util.objectClone<Style>(options.style),
labelCfg,
curveOffset: options.curveOffset,

View File

@ -169,8 +169,10 @@ export class ModelConstructor {
linkNames = Object.keys(linkOptions);
linkNames.forEach(name => {
for (let i = 0; i < nodes.length; i++) {
let node: SVNode = nodes[i],
value,
sourceLinkData: sourceLinkData = node.sourceNode[name],
targetNode: SVNode | SVNode[] = null,
link: SVLink = null;
@ -183,11 +185,18 @@ export class ModelConstructor {
// ------------------- 将连接声明字段 sourceLinkData 从 id 变为 SVNode -------------------
if (Array.isArray(sourceLinkData)) {
node[name] = sourceLinkData.map((item, index) => {
// 提取权值
if (typeof item === 'string' && item.includes('/')) {
value = item.split('/')[1];
item = item.split('/')[0];
}
targetNode = this.fetchTargetNodes(layoutGroupTable, node, item);
let isGeneralLink = ModelConstructor.isGeneralLink(sourceLinkData.toString());
if (targetNode) {
link = this.createLink(name, group, layout, node, targetNode, index, linkOptions[name]);
link = this.createLink(name, group, layout, node, targetNode, index, linkOptions[name],value);
linkList.push(link);
}
@ -198,7 +207,7 @@ export class ModelConstructor {
let isGeneralLink = ModelConstructor.isGeneralLink(sourceLinkData.toString());
if (targetNode) {
link = this.createLink(name, group, layout, node, targetNode, 0, linkOptions[name]);
link = this.createLink(name, group, layout, node, targetNode, 0, linkOptions[name],value);
linkList.push(link);
}
@ -379,7 +388,8 @@ export class ModelConstructor {
node: SVNode,
target: SVNode,
index: number,
options: LinkOption
options: LinkOption,
label: string
): SVLink {
let id;
// 如果数据结构是图则不需要index来区分是哪条边
@ -388,7 +398,7 @@ export class ModelConstructor {
} else {
id = `${linkName}{${node.id}-${target.id}}#${index}`;
}
return new SVLink(id, linkName, group, layout, node, target, index, options);
return new SVLink(id, linkName, group, layout, node, target, index, options,label);
}
/**
@ -428,6 +438,8 @@ export class ModelConstructor {
return null;
}
if (typeof linkTarget === 'number' || (typeof linkTarget === 'string' && !linkTarget.includes('#'))) {
linkTarget = 'default#' + linkTarget;
}

View File

@ -30,9 +30,11 @@ export const Animations = {
let matrix = group.getMatrix(),
targetMatrix = Mat3.clone(matrix);
Mat3.scale(matrix, matrix, [0, 0]);
// 让结点大小从0到1出现
Mat3.scale(matrix, matrix, [0, 0]);//第一个参数的matrix是你要更改的矩阵,第二个参数是更改之后的新矩阵,第三个参数就是缩放系数分别对应xy
Mat3.scale(targetMatrix, targetMatrix, [1, 1]);
// 让结点透明度从0到1
group.attr({ matrix, opacity: 0 });
group.animate({ matrix: targetMatrix, opacity: 1 }, animateCfg);
}