[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 공식 문서를 참조하시기 바랍니다.

참고 문헌: