[javascript] Cytoscape.js에서 그래프의 특정 부분을 마우스로 드래그하여 선택하고 다른 부분과의 연결을 확인하는 방법은 무엇인가요?
// Cytoscape.js 그래프 생성
var cy = cytoscape({
container: document.getElementById('cy'), // 그래프를 표시할 HTML 요소 선택
/* 그래프 구조 및 스타일 설정 */
elements: {
nodes: [
{ data: { id: 'node1' } },
{ data: { id: 'node2' } },
{ data: { id: 'node3' } }
],
edges: [
{ data: { source: 'node1', target: 'node2' } },
{ data: { source: 'node2', target: 'node3' } }
]
},
style: [
{
selector: 'node',
style: { 'background-color': 'blue' }
},
{
selector: 'edge',
style: { 'width': 3, 'line-color': 'black' }
}
]
});
// 그래프의 일부를 선택하는 이벤트 핸들러
cy.on('mousedown', function(event) {
var target = event.target;
if (target.isNode()) {
target.addClass('selected');
}
});
// 선택된 노드와 연결된 엣지를 강조 표시하는 이벤트 핸들러
cy.on('tap', 'node:selected', function(event) {
var selectedNode = event.target;
cy.edges().removeClass('highlight'); // 모든 엣지의 강조 효과 제거
// 선택된 노드와 연결된 엣지를 찾아서 표시
selectedNode.connectedEdges().addClass('highlight');
});
위 코드에서 mousedown
이벤트를 사용하여 마우스로 노드를 클릭하면 selected
클래스가 해당 노드에 추가됩니다. 그리고 tap
이벤트를 사용하여 node:selected
선택자에 해당하는 노드를 클릭하면 해당 노드와 연결된 엣지를 강조 표시하는데, 강조 효과는 highlight
클래스를 추가하여 구현됩니다.
더 자세한 내용은 Cytoscape.js 공식 문서를 참조하시기 바랍니다.
참고 문헌:
- Cytoscape.js 문서: https://js.cytoscape.org/
- Cytoscape.js GitHub 저장소: https://github.com/cytoscape/cytoscape.js