Как обнаружить событие двойного клика на диаграмме Google (круговая диаграмма)

Как обнаружить событие двойного щелчка в диаграммах Google? Вот мой код:

    var options = {
      title: 'My Daily Activities'
    };

    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    console.log(chart);
    chart.is3D = true;
    chart.draw(data, options);
    google.visualization.events.addListener(chart, 'click', function(e){
        console.log(e);
        console.log(chart.getSelection());
        var data = chart.getSelection();
        if(data.length > 0) {
            alert(0);
            chart.setSelection([]);
        }
        //window.open("http://classicmayank.limewebs.com", "mywindow1", "status=1,width=350,height=150");
    });
  }

person Mayank Saxena    schedule 20.04.2012    source источник


Ответы (5)


Я знаю, что это старый вопрос, но я попробовал немного взломать, как обнаружить двойной щелчок. Просто измерив его. Это, конечно, не очень хорошее и надежное решение, но, похоже, оно работает.

var firstClick = 0;
var secondClick = 0;

google.visualization.events.addListener(chart, 'click', function () {
    var date = new Date();
    var millis = date.getTime();

    if (millis - secondClick > 1000) {        
        // add delayed check if a single click occured
        setTimeout(function() {
            // no second click fast enough, it is a single click
            if (secondClick == 0) {
                alert("click");
            }
        }, 250);
    }

    // try to measure if double-clicked
    if (millis - firstClick < 250) {        
        firstClick = 0;
        secondClick = millis;

        alert("doubleClick");

    } else {
        firstClick = millis;
        secondClick = 0;
    }
});    

JSFiddle для этого находится здесь.

person Martin    schedule 01.07.2015
comment
Одним из недостатков является замедление отклика на один клик (на 250 мс ожидание потенциального второго клика). Я понятия не имею, как это улучшить, но у систем пользовательского интерфейса, таких как Windows, похоже, есть решение. Нет задержки одним щелчком мыши. - person Martin; 27.01.2016

я сделал следующее

    var clicks = 0;

    function selectHandler() {

      clicks++;

      setTimeout(function() {
          if (clicks >= 2) {
              alert("double click");

          }
          clicks = 0;
      }, 250);



    }

    //bind the select event with chart
    google.visualization.events.addListener(chart, 'select', selectHandler);
person Sadi    schedule 09.02.2016

Думаю, немного поздно, но используйте что-то вроде

   google.visualization.events.addListener(chart, 'select', columnselectHandler)
   var status = 0;

   function columnselectHandler(e) {
            var selection = chart.getSelection();
            var selectedItem = selection[0];
            var data2 = getDDData(k);
            var columndata = [] 
      if (selectedItem) {
    if (status == 0){
    var name = data.getValue(selectedItem.row, 0);
    columndata[0] =  data2[0] 
    columndata[1] =  data2[selectedItem.row+1]                          
              var chartData = new google.visualization.arrayToDataTable(columndata);
        chart.draw(chartData, {width: 1200, height:500}, options);
        var button = document.getElementsByClassName("backToMain")[0];        
          button.setAttribute("id",chartType)
         button.setAttribute("style","display:inline; margin-top:150px; font-size:30px; position:absolute;")` 
person Eric Dunham    schedule 11.03.2015

Я сделал это, прослушивая событие двойного щелчка в chart_div (контейнер).

conatiner = document.getElementById('chart_div');

container.addEventListener('dblclick', (e)=>console.log('двойной щелчок'));

person jsa    schedule 19.01.2020

JQuery предоставляет событие двойного щелчка, которое вы можете использовать. Как вы можете видеть в примере здесь:

$("p").dblclick( function () { alert("Hello World!"); });

Страница jQuery, где вы можете найти больше, находится здесь: http://api.jquery.com/dblclick/

person Răzvan Ciocănel    schedule 20.04.2012
comment
Ни один чувак на самом деле не отображает диаграммы Google в iframe, и мы не можем сделать его интерактивным, поэтому я спрашиваю здесь, что делать? - person Mayank Saxena; 20.04.2012
comment
Хорошо, если вам нужно только дважды щелкнуть диаграмму, вы можете использовать это, чтобы дважды щелкнуть iframe. Может быть, я ошибся, но я вижу, что у вас уже есть событие, поэтому этот двойной щелчок должен быть тем же самым. - person Răzvan Ciocănel; 20.04.2012
comment
Чувак, я ищу с сегодняшнего утра и ничего не нашел об этом, я думаю, что событие dblclick не поддерживается в диаграммах Google. - person Mayank Saxena; 20.04.2012
comment
Да, у меня такая же проблема. Я бы хотел, чтобы у него был щелчок и dblclick. - person Maxx; 16.07.2012