[javascript] Cytoscape.js에서 그래프의 노드를 클릭하거나 드래그하여 다른 관계를 확인하는 방법은 무엇인가요?

이벤트 리스너 등록하기

Cytoscape.js에서는 cy.on('event', handler) 메서드를 사용하여 그래프 이벤트에 대한 리스너를 등록할 수 있습니다. 이벤트는 ‘click’, ‘drag’, ‘mouseover’, ‘mouseout’ 등 다양한 유형이 있습니다. 아래는 ‘click’ 이벤트에 대한 예시입니다.

cy.on('click', 'node', function(event){
  var clickedNode = event.target;
  // 클릭된 노드에 대한 작업 수행
});

위의 예제에서 cy.on('click', handler)를 사용하여 노드 클릭 이벤트에 대한 리스너를 등록하였습니다. ‘node’는 세부 선택자로, 이벤트가 발생한 노드에 대해서만 동작하도록 지정하였습니다. event 객체를 통해 클릭된 노드에 대한 정보에 접근할 수 있습니다.

관련 관계 확인하기

클릭된 노드와 연결된 관계를 확인하기 위해서는 해당 노드에 연결된 엣지를 탐색해야 합니다. Cytoscape.js에서는 connectedEdges() 메서드를 사용하여 노드와 연결된 엣지를 얻을 수 있습니다. 다음은 클릭된 노드와 연결된 엣지를 추출하는 예시입니다.

cy.on('click', 'node', function(event){
  var clickedNode = event.target;
  var connectedEdges = clickedNode.connectedEdges();
  
  connectedEdges.forEach(function(edge){
    var sourceNode = edge.source();
    var targetNode = edge.target();
    
    // sourceNode와 targetNode 사이의 관계에 대한 작업 수행
  });
});

위의 예제에서 connectedEdges() 메서드를 사용하여 클릭된 노드에 연결된 엣지를 얻었습니다. forEach() 메서드를 사용하여 얻은 엣지들을 순회하며 소스 노드와 타겟 노드를 얻을 수 있습니다. 이후 적절한 작업을 수행할 수 있습니다.

드래그 이벤트 역시 비슷한 방법으로 처리할 수 있습니다. cy.on('drag', handler)로 드래그 이벤트를 등록하고, 이벤트 핸들러에서 드래그된 노드에 대한 작업을 수행할 수 있습니다.

Cytoscape.js를 사용하여 그래프의 노드를 클릭하거나 드래그하여 다른 관계를 확인하는 방법에 대해 알아보았습니다. 더 자세한 내용은 Cytoscape.js 문서를 참조하세요.