jQuery Flot очистить выбор

Хорошо, я почти уверен, что как только я начал использовать Flot, кнопка «Очистить выбор» на демонстрационной странице работала, http://people.iola.dk/olau/flot/examples/selection.html. Это работает для любого из вас? Я пробовал в IE 7/8 и Firefox.

Я заметил это только при попытке реализовать ту же функциональность на моем графике и не смог заставить ее работать, только чтобы найти примеры, которые не работают на демонстрационной странице...

Вот мой код:

$.post(applicationPath + "graph/" + action,
    function (data)
    {
        var graphOptions = {
            xaxis: {
                mode: 'time',
                timeformat: "%m/%d/%y"
            },
            yaxis: {
                tickDecimals: 0
            },
            legend: {
                show: true,
                container: $('.legend')
            },
            series: {
                points: { show: true },
                lines: { show: true }
            },
            grid: {
                hoverable: true,
                clickable: true
            },
            selection: {
                mode: "xy"
            }
        };

        // hard-code color indices to prevent them from shifting as
        // series are turned on/off
        var i = 0;
        $.each(data, function (key, val)
        {
            val.color = i;
            i++;
        });

        var optionsContainer = $('.module.graph .options-menu');

        $.each(data, function (key, val)
        {
            optionsContainer.append('<li><input type="checkbox" name="' + key + '" checked="checked" id="id' + key + '">' + val.label + '</li>');
        });

        $('.module.graph .header .options').optionsMenu(
        {
            sTarget: '.options-menu',
            fnCheckboxSelected: function (index, name)
            {
                $.plot(data, optionsContainer, graphOptions);
            },
            fnCheckboxDeselected: function (index, name)
            {
                $.plot(data, optionsContainer, graphOptions);
            }
        });

        var dataSet = [];

        optionsContainer.find('input:checked').each(function ()
        {
            var key = $(this).attr('name');

            if (key && data[key])
            {
                dataSet.push(data[key]);
            }
        });

        var previousPoint = null;
        var graphContainer = $('.graph #graph-container');

        graphContainer.bind('plothover', function (e, pos, item, ranges)
        {
            if (item)
            {
                if (previousPoint != item.datapoint)
                {
                    previousPoint = item.datapoint;

                    $('#tooltip').remove();

                    var xFormatted = new Date(item.datapoint[0]).toDateString();
                    var x = item.datapoint[0].toFixed(2);
                    var y = item.datapoint[1].toFixed(2);

                    showGraphToolTip(item.pageX, item.pageY, item.series.label + " of " + y + " on " + xFormatted);
                }
            }
            else
            {
                $('#tooltip').remove();
                previousPoint = null;
            }
        });

        graphContainer.bind('plotselected', function (event, ranges)
        {
            if (ranges.xaxis.to - ranges.xaxis.from < 0.00001)
            {
                ranges.xaxis.to = ranges.xaxis.from + 0.00001;
            }
            if (ranges.yaxis.to - ranges.yaxis.from < 0.00001)
            {
                ranges.yaxis.to = ranges.yaxis.from + 0.00001;
            }

            $.plot(graphContainer, dataSet,

                $.extend(true, {}, graphOptions,
                {
                    xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },
                    yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }
                })
            );
        });

        var graph = $.plot(graphContainer, dataSet, graphOptions);

        $('#clearSelection').click(function ()
        {
            graph.clearSelection();
        });
    },
    "json"
);

Я действительно не вижу ничего плохого в своем коде, так как это практически копия из примеров Flot, но есть ли здесь что-то бросающееся в глаза?

Кроме того, возможна ли ошибка во Flot? Демонстрация четкого выбора работает для вас?


person Jeff    schedule 06.02.2011    source источник
comment
Демонстрационная ссылка у меня работает нормально. Видите ли вы какие-либо ошибки js в Firebug/Console, когда они не работают?   -  person Dogbert    schedule 07.02.2011
comment
На самом деле я сейчас сижу за другим компьютером и до сих пор ничего не получаю в демоверсии. В Firebug тоже ошибок нет. И просто к вашему сведению, я устанавливаю флажок масштабирования для выбора, и масштабирование работает нормально. Какой браузер вы используете? Я использую Firefox 3.6.13 и IE 8. Полная странность...   -  person Jeff    schedule 07.02.2011
comment
Вау... даже попробовал на своем iPhone, но нажал кнопку "Выбрать год", потому что нельзя масштабировать. Четкий выбор все еще не работал...   -  person Jeff    schedule 07.02.2011
comment
лол ... Я только что разговаривал с коллегой и, по-видимому, совершенно неправильно понял эту функцию. Я думал, что функция clearSelection вернет график обратно в его нормальное состояние перед масштабированием... что действительно имело бы больше смысла, чем буквальное значение Clear Selection. Ну что ж, я реализовал то, что хотел... хотя посмеяться было неплохо. По понедельникам   -  person Jeff    schedule 07.02.2011
comment
Если бы вы могли поместить свой последний комментарий в качестве ответа, это было бы круто, потому что это показало бы, что это больше не открытый вопрос. Спасибо, что вернулись, чтобы изложить резолюцию.   -  person rossdavidh    schedule 08.02.2011


Ответы (1)


С flot.googlecode.com

  • настройка сетки ()
Recalculate and set axis scaling, ticks, legend etc.

Note that because of the drawing model of the canvas, this
function will immediately redraw (actually reinsert in the DOM)
the labels and the legend, but not the actual tick lines because
they're drawn on the canvas. You need to call draw() to get the
canvas redrawn.

Если вы добавите это в функцию сброса, вы сможете заставить ее работать так, как вы ожидаете.

person rossdavidh    schedule 08.02.2011