【问题标题】:Dismiss Google Pie Chart Tooltip on Click Away点击离开时关闭 Google 饼图工具提示
【发布时间】:2018-01-05 21:46:33
【问题描述】:

我使用Google Pie Chart 来表示数据。图表的工具提示包括用户可以单击的操作项。为了让工具提示保持足够长的时间让用户点击项目,我选择在点击/选择而不是悬停时显示工具提示:

tooltip: { trigger: 'selection' }

现在的问题是,关闭这些工具提示的唯一方法是在图表上进行另一个选择(从而显示另一个工具提示)或单击之前选择的相同图例/饼图值。

这很笨重;为了获得良好的用户体验,我希望用户只需单击饼图周围的空白区域即可关闭工具提示。

到目前为止,我找到的最接近的解决方案是this question,但第一个答案不起作用,第二个答案不允许通过单击关闭工具提示。问题似乎是图表周围的所有空白仍然被认为是图表本身的一部分,而不是一个单独的元素。我试图通过检查点击元素的类型来绕过这个限制,看看它是否是空白,如下所示:

function clearChartSelection(e) {

        if (!chartDOMElement.contains(e.srcElement) || e.srcElement.tagName.toUpperCase() == 'RECT') {
            chart.setSelection();
        }
    }

不幸的是,这也不起作用,因为图例元素有时会呈现为矩形类型而不是文本(我仍在尝试找出导致这种情况的原因)。 在饼图中,图例点击也设置了选择,我想保留这个功能。

现在我正在研究以下两条路径,但没有运气:

  1. 其他区分切片/图例和空白图表区域的方法,或

  2. 如果还触发了选择事件,则以某种方式阻止点击事件。

我绝对愿意接受任何其他可能解决此问题的想法。我想要的功能对于工具提示来说很常见,所以希望我只是错过了一些明显的东西。

【问题讨论】:

    标签: javascript jquery charts google-visualization google-pie-chart


    【解决方案1】:

    除了正文点击,
    使用图表的点击事件

    请参阅以下工作 sn-p...

    google.charts.load('current', {
      packages:['corechart']
    }).then(function () {
      var data = google.visualization.arrayToDataTable([
        ['Label', 'Value'],
        ['A', 1],
        ['B', 2],
        ['C', 2],
        ['D', 2],
        ['E', 7]
      ]);
    
      var options = {
        tooltip: {
          trigger: 'selection'
        }
      };
    
      var container = document.getElementById('chart_div');
      var chart = new google.visualization.PieChart(container);
    
      google.visualization.events.addListener(chart, 'click', clearSelection);
      document.body.addEventListener('click', clearSelection, false);
    
      chart.draw(data, options);
    
      function clearSelection(e) {
        if (!container.contains(e.srcElement)) {
          chart.setSelection();
        }
      }
    });
    html, body {
      height: 100%;
    }
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="chart_div"></div>

    【讨论】:

    • 如此简单,完美运行。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-07-25
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多