2014-09-26 5 views
0

다음과 유사한 orgchart를 사용하여 차트를 만들었습니다. MySQL의 테이블에 저장된 데이터를 통해 생성 된 차트 (PHP를 사용하여).Google OrgChart - Google 시각화

enter image description here

내 질문은 내가 기타 세부 사항과 함께 각 노드의 깊이 레벨을 표시 할 수 있습니다. 그렇게하는 방법?

Example: Food -> Level 1 Vegetable and Meat -> Level 2 Vegetable 1, Vegetable 2 and Meat 1 -> Level 3

는 ** 선택된 노드의 행 (깊이)를 얻을 수있는 API 메소드 (data.getSelection.row)가있다. 그러나 항상 선택된 노드의 행 대신 선택된 노드의 인덱스를 제공하는 것 같습니다. ** 회원님이 그들을 표시 할 방법을 잘하지만, 여기에 내가 생각 해낸 아이디어입니다

답변

1

:

 var depth = {}; // here we store node depths 
     google.visualization.events.addListener(chart, 'ready', function() { 
      for (var i = 0; i < data.getNumberOfRows(); i++) { 
       depth[i] = 0; // we iniialize all in 0 depth 
      } 
      for (var i = 0; i < data.getNumberOfRows(); i++) { // for each row 
       var childs = chart.getChildrenIndexes(i); // we check its descendants 
       for (var child = 0; child < childs.length; child++) { 
        depth[childs[child]] += depth[i] + 1; // and add the parents depth+1 
       } 
      } 
      console.log(depth) // here we have already all nodes depth 
     }); 
     google.visualization.events.addListener(chart, 'select', function() { 
      if (chart.getSelection().length > 0) { 
       var node_row = chart.getSelection()[0].row; 
       console.log(depth[node_row]) // now just show the depth of selected node 
      } 
     }) 
     chart.draw(data, { 
      allowHtml: true 
     }); 

근무 바이올린 :

+0

http://jsfiddle.net/a2zwqf1r/가 대단히 친구 감사이. 이것이 내가 정말로 필요로하는 것입니다. – Dipsomania

+0

한 가지 더 물어볼 게 있습니다. 차트를 그릴 때 다른 세부 사항과 함께 노드 내의 깊이 수준을 표시하는 방법이 있습니까? 지금까지 깊이 수준을 얻으려면 클릭해야합니다. 아이디어를 얻으려면이 이미지를 참조하십시오. http://i60.tinypic.com/21oo3fl.png – Dipsomania

+1

@Dipsomania 여기에 있습니다. http://jsfiddle.net/a2zwqf1r/1/. 처음으로 값을 그린 후 값을 변경하고 무한 루프를 피하기 위해 수신기를 제거한 다음 다시 그리기 – juvian