Tree 다이어그램에서 node.ancestors()를 사용하여 조상 요소까지의 경로를 강조 표시

버전



d3.js의 버전은 4.1.0입니다.

코드



이번에 사용한 모든 코드

mouse 이벤트 추가


addHover() {
    this.element.on("mouseover", this.mouseovered(true))
    .on("mouseout", this.mouseovered(false));
}

mouse hover시켜 하이라이트시킵니다. 원점이 되는 요소에 mouse 이벤트를 추가합니다.

해당 코드

조상 요소 하이라이트





코드


mouseovered(active) {

    return function(d) {

      var paths = d3.selectAll("path");

      if(active) {
        let ancestors = d.ancestors();

        //ハイライト
        paths.filter((d) => ancestors.includes(d))
        .style("stroke", "#f00");

      } else {
        //ハイライトやめて、デフォルトの色に変更
        paths.style("stroke", "#555");
      }
    };
  }

node.ancestors()



조상 요소를 배열로 돌려줍니다.

d3-hierarchy/README.md at master · d3/d3-hierarchy

includes



indexOf 대신 ES6 includes를 사용하여 배열의 요소를 검색합니다. filter를 사용하여 조상 요소에 해당하는 것만 선별합니다.

String.prototype.includes() - JavaScript | MDN

좋은 웹페이지 즐겨찾기