如何通过将鼠标悬停在 sigmaJs 中的当前节点上来仅对当前节点和连接的节点绘制标签?
How to drawLabels true only for current node and connected node by hovering on current Node in sigmaJs?
我正在使用 sigmaJs 的 overNode 事件
我的设置对象
settings: {
autoRescale: ["nodePosition", "nodeSize"],
labelThreshold: 0,
adjustSizes: true,
fixed: true,
labelHoverBGColor: "#f45b3d",
nodeMargin: 50,
nodesPowRatio: 1,
defaultNodeBorderColor: '#000000',
minArrowSize: 7,
drawLabels: false,
}
this.s.bind("overNode", (d) => {
this.s.graph.edges().forEach((e) => {
if (e.target === d.data.node.id || e.source === d.data.node.id)
{
e.color = "#407784";
e.size = 3;
} else {
e.color = e.originalColor;
e.size = 1;
}
});
this.s.refresh();
})
我可以使用 overNode 悬停并突出显示已连接的节点,但 nodeLabel 未显示。
在设置中,我最初将 drawLabels 设置为 false,因为我最初不想显示标签。
因此,如果我将鼠标悬停在任何节点上,我只想显示连接标签的标签。
你可以试试下面的逻辑:
this.s.graph.nodes().forEach(n => {
if (n.id !== d.data.node.id) {
n.color = "#D3D3D3";
n.label = '';
} else {
n.label = n.displayLabel;
}
})
第一次,当您将数据推送到节点时,只需将空字符串作为标签传递并添加另一个 属性 显示标签。
请确保 drawLabels 属性 为 true,overNode drawLabels 必须为 true,outNode drawLabels 必须为 false。
现在上面的 for 循环将在您想要显示标签时使用该 displayLabel 属性。
我正在使用 sigmaJs 的 overNode 事件 我的设置对象
settings: {
autoRescale: ["nodePosition", "nodeSize"],
labelThreshold: 0,
adjustSizes: true,
fixed: true,
labelHoverBGColor: "#f45b3d",
nodeMargin: 50,
nodesPowRatio: 1,
defaultNodeBorderColor: '#000000',
minArrowSize: 7,
drawLabels: false,
}
this.s.bind("overNode", (d) => {
this.s.graph.edges().forEach((e) => {
if (e.target === d.data.node.id || e.source === d.data.node.id)
{
e.color = "#407784";
e.size = 3;
} else {
e.color = e.originalColor;
e.size = 1;
}
});
this.s.refresh();
})
我可以使用 overNode 悬停并突出显示已连接的节点,但 nodeLabel 未显示。
在设置中,我最初将 drawLabels 设置为 false,因为我最初不想显示标签。
因此,如果我将鼠标悬停在任何节点上,我只想显示连接标签的标签。
你可以试试下面的逻辑:
this.s.graph.nodes().forEach(n => {
if (n.id !== d.data.node.id) {
n.color = "#D3D3D3";
n.label = '';
} else {
n.label = n.displayLabel;
}
})
第一次,当您将数据推送到节点时,只需将空字符串作为标签传递并添加另一个 属性 显示标签。
请确保 drawLabels 属性 为 true,overNode drawLabels 必须为 true,outNode drawLabels 必须为 false。
现在上面的 for 循环将在您想要显示标签时使用该 displayLabel 属性。