2011-02-24 3 views
2

gRaphael JS lib를 사용하여 선형 차트를 그립니다. 및 haverColumn 기능에 몇 가지 문제가 있습니다. 이것은 단순화 된 hoverColumn 함수입니다.g.raphael js (graphaeljs), line, hoverColumn 문제

var line = raphael.g.linechart(50, 20, 650, 120, xAry, yAry, options).hoverColumn(function(){ 
    ... 
    console.log(this.x+","+this.y); 
    .... 
} 
마우스 차트에 유혹되면, hoverColumn 함수가 호출

및 로그 기능이 실행됩니다. 그러나 일부 영역에서는 hoverColumn 함수를 호출하지 않습니다.

그래서 파이어 버그를 사용하여 디버깅을했는데 그 이유를 발견했습니다. 꺾은 선형 차트에 큰 사각형 영역이 있습니다. 마우스가 해당 영역에있을 때 마우스가 차트 열에 있더라도 hoverColumn이 호출되지 않습니다.

여기 이해를 돕기 위해 캡처 한 이미지입니다. 화재 버그 및 rect. 내가 수동으로 불을 지르고를 사용하는 구형을 제거 할 때

enter image description here

, hoverColumn 기능 -_- ~ 잘 작동한다;

지역 번호는 gRaphael-js에 의해 자동으로 작성됩니다.

그래서이 문제를 해결할 방법이 있습니까? 어떤 생각이든 ~

답변

8

마지막으로 해결책을 찾았습니다 (해킹은 1 일 걸립니다 ... = _ =;). 문제는 g.line.js, graphael js 라이브러리에 있습니다. 소스 코드

, 이런 createColumns 함수가,

function createColumns(f) { 
     // unite Xs together 
     var Xs = []; 
     for (var i = 0, ii = valuesx.length; i < ii; i++) { 
      Xs = Xs.concat(valuesx[i]); 
     } 
     Xs.sort(); 
     .... 
     ... 
     .. 
} 

문제점은 분류 함수이다. Xs.sort()는 x 값을 정렬하지만 오류가있는 정렬 된 배열을 반환합니다. 입력 배열 인 경우 따라서,

valuesx = [0.05076044713698533, 9.579202857778233, 10.93181619059174]; 
valuesx.sort(); 

결과 결과

[0.05076044713698533, 10.93181619059174, 9.579202857778233] 
not 
[0.05076044713698533, 9.579202857778233, 10.93181619059174] 

인 열이 ~ 그래서

세분화하고, I는 정렬 기능 Xs.sort 변경() like :

Xs.sort(function(a, b){ 
      return a - b; 
     }); 

잘 ~ ^^; 희망이 있습니다 ~

+0

감사합니다, hoverColumns를 사용하려고 할 때이 동일한 문제가 발생했습니다. 이 문제는 [보고 된] 것 같습니다 (https://github.com/DmitryBaranovskiy/g.raphael/issues#issue/9) [multiple] (https://github.com/DmitryBaranovskiy/g.raphael/issues # issue/19) [번] (https://github.com/DmitryBaranovskiy/g.raphael/issues#issue/60). 고정 될 때까지 수동으로 g.line.js에 구현해야하는 것처럼 보입니다. – scurker

+0

해킹 해 주셔서 감사합니다. 나는 매우 늦었다는 것을 알고 있지만 그것은 나를 많이 도왔다. –

+1

고마워, 나는이 버그가 너무 많은 시간을 절약 할 수 있도록 버그를 쳤다. GitHub 포크에서 수정 사항 및 기타 유용한 기능을 통합 한 포크를 발견했습니다. 선적 서류 비치. 나는 [this one] (https://github.com/mobz/g.raphael)을 사용하여 끝냈다. –