javascript - 点击离开时关闭 Google 饼图工具提示

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

我正在使用 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. 如果选择事件也被触发,则以某种方式阻止点击事件。

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

最佳答案

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

请参阅以下工作片段...

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>

关于javascript - 点击离开时关闭 Google 饼图工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48121730/

相关文章:

javascript - 将图标添加到正确/不正确的答案(ionic 中的 css)

javascript - 检查未定义的 javascript 未命中

javascript - 上传 CSV,然后在 JavaScript 中作为数组输出

javascript 将 html div 中的内容复制到我创建的另一个页面中

javascript - 如何创建只能包含流中某些属性的类型?

javascript - 自定义单元格表 react 虚拟化

jquery - 如何先执行动画功能然后再应用

python - 使用 python 将多个工作表中的数据添加到 Excel 图表中

javascript - d3js : how to put circles at the end of an arc

java - 快速绘制多个图表的计时问题