g.raphael js (graphaeljs), строка, проблема hoverColumn

Я использую 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 не вызывается, несмотря на то, что мышь находится в столбце диаграммы.

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

введите здесь описание изображения

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

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

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


person Jinbom Heo    schedule 24.02.2011    source источник


Ответы (1)


Наконец-то я нашел решение (взлом занял 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;
        });

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

person Jinbom Heo    schedule 25.02.2011
comment
Спасибо, я столкнулся с этой же проблемой при попытке использовать hoverColumns. Похоже, об этой проблеме было сообщено несколько раз. Пока это не будет исправлено, похоже, мне нужно вручную реализовать это в моем g.line.js. - person scurker; 24.03.2011
comment
Спасибо за этот хак. Я знаю, что я очень поздно, но это мне очень помогло. - person Ashwin Krishnamurthy; 19.05.2011
comment
Спасибо, я тоже только что столкнулся с ошибкой, поэтому этот пост сэкономил мне много времени. Я нашел несколько вилок GitHub, включающих исправление и другие полезные функции, например. документация. В итоге я использовал этот. - person Owen Fraser-Green; 23.06.2011