2012-02-23 10 views
1

일부 dygraphs 데이터 시리즈의 초기 가시성을 열 이름으로 설정하려고합니다.시리즈 이름으로 dygraphs 초기 열 가시성 설정

데이터가 들어 오거나 갈 수있는 열이 포함 된 CSV 파일에서 가져온 것이기 때문에이 열이 기본적으로 비활성화되기를 원하지만 몇 열인지 알지 못합니다. (단지 이름).

저는 javascript에 익숙하지 않으므로 간단합니다. 나는이 작업을 수행하기 위해 노력하고있어 :

<script type="text/javascript"> 
    g = new Dygraph(
     document.getElementById("graphdiv"), // containing div 
     "last/test.csv", 
     { 
      connectSeparatedPoints: true, 
      includeZero: true 
     } 
    ); 

    g.setVisibility(g.indexFromSetName("writer_write_start") - 1, 0); 
</script> 

을하지만이 나에게 오류를 제공합니다. javascript 콘솔이나 onclick 이벤트에서 setVisibility 명령을 실행하면 정상적으로 작동합니다. Dygraph가 CSV 파일의 데이터를 참조하는 메서드를 실행하려고 할 때 완전히로드되지 않는다고 생각합니다. 그리고 dygraph가 완전히로드 된 후 다른 방법으로이 메서드를 실행해야합니다.

답변

3

데이터 매개 변수로 CSV 파일 경로를 사용하여 new Dygraph을 호출하면 호출이 비동기 적입니다. 따라서 의문의 여지는 정확합니다. g.indexFromSetName("writer_write_start")으로 전화하면 원하는 답변을 얻는 데 필요한 데이터를 아직 사용할 수 없습니다.

이 처리하는 가장 좋은 방법은과 같이, 초기 drawCallback로 setVisibility 코드를 이동하는 것입니다 :

<script type="text/javascript"> 
    g = new Dygraph(
     document.getElementById("graphdiv"), // containing div 
     "last/test.csv", 
     { 
      connectSeparatedPoints: true, 
      includeZero: true, 
      drawCallback: function(dg, is_initial) { 
       if (!is_initial) return; 
       dg.setVisibility(dg.indexFromSetName("writer_write_start") - 1, 0); 
      } 
     } 
    ); 
</script> 
+0

아, 감사합니다! 타이머를 사용하여 작업했지만 완전히 신뢰할 수는 없습니다. 이것은 훨씬 나아 보인다. – blueshift