g.raphael js (graphaeljs), строка, проблема hoverColumn - PullRequest
2 голосов
/ 24 февраля 2011

Я использую gRaphael JS lib для рисования графика.и есть некоторые проблемы с функцией haverColumn.это моя упрощенная функция hoverColumn.

var line = raphael.g.linechart(50, 20, 650, 120, xAry, yAry, options).hoverColumn(function (){
    ...
    console.log(this.x+","+this.y);
    ....
}

Когда мышь наводит курсор на графике, вызывается функция hoverColumn и выполняется функция журнала.Но некоторые области не вызывают функцию hoverColumn.

Итак, я сделал отладку с помощью firebug, я нашел причину.На линейной диаграмме была большая прямоугольная область, когда мышь находится в этой области, hoverColumn не вызывается, несмотря на то, что мышь находится в столбце диаграммы.

вот захваченное изображение, чтобы помочь пониманию.ошибка, и прямоугольник.

enter image description here

когда я удаляю прямоугольник вручную с помощью firebug, функция hoverColumn хорошо работает ~ -_-;

код городасделано gRaphael-js автоматически.

Итак, есть ли способ решить эту проблему?Любая идея, пожалуйста ~

1 Ответ

8 голосов
/ 25 февраля 2011

Я наконец нашел решение (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]

, столбец был разбит ~

, поэтому я изменил сортировкуфункция, Xs.sort () так:

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

хорошо работает ~ ^^;Надеюсь, это поможет ~

...