【发布时间】:2021-07-06 13:47:59
【问题描述】:
我需要覆盖 Highchart.js 中网络图上的默认节点悬停效果。 默认行为是,当您将鼠标悬停在节点上时,linkedTo 和linkedFrom 节点会突出显示,所需的行为是当我将鼠标悬停在节点上时,仅突出显示linkedFrom 节点,基本上就像广度优先搜索可视化,我'已经设法编写算法,但突出显示了一些额外的节点。
这是我用来突出显示所有节点的算法,但这不会覆盖默认功能
point: {
events: {
mouseOver: function () {
var point = this,
chart = this.series.chart,
nodes = chart.series[0].nodes;
bfs(this.id);
function bfs(start) {
const queue = [findNodeById(start)];
// Store visited nodes in a set
const visited = new Set();
// Loop until we have something in the queue
while (queue.length > 0) {
// Pop out first element from queue
const topNode = queue.shift();
// Edges TO first element
const prevEdges = topNode.linksTo;
for (const edge of prevEdges) {
// For each edge find their corresponding nodes and set their state to 'hover'
let prevNode = findNodeById(edge.from);
prevNode.setState("hover");
// If edge is not visited yet, push to Set and add to queue
if (!visited.has(prevNode)) {
visited.add(prevNode);
queue.push(prevNode);
}
// nextNode.setState('inactive')
}
}
}
function findNodeById(id) {
return nodes.filter((node) => node.id == id)[0];
}
},
},
},
我尝试禁用/启用悬停状态,但没有成功。我的方法在这里可能完全错误,任何建议都值得赞赏!
【问题讨论】:
标签: javascript graph highcharts data-visualization breadth-first-search