javascript - Google Charts - 将默认内容与自定义 HTML 混合用于工具提示

标签 javascript charts google-visualization

尝试向 Googlechart 添加一些自定义 HTML 工具提示。

我已经关注了 docs据我所知,我的自定义内容位于原始内容的中心(而不是按预期覆盖原始内容)。

有没有办法用原始值自定义工具提示 html,或者完全覆盖工具提示内容?

JSFiddle here

  [1]: 

google.charts.load('current', {'packages':['corechart', 'bar']});
 google.charts.setOnLoadCallback(drawBarChart);
                                        function drawBarChart() {

                                            var bardata = google.visualization.arrayToDataTable([
                                                ['Genre', 'Accepted', 'Pending' , {'type': 'string', 'role': 'tooltip', 'p': {'html': true}}],
                                                ['Egg Baskets', 4325, 4324 , createCustomHTMLContent(234 , 434)],
                                                ['Cheese Wedges', 43, 434,  createCustomHTMLContent(234 , 434)],
                                                 ['Bannanasanan', 43, 434,   createCustomHTMLContent(234 , 434)]]);

                                            var view = new google.visualization.DataView(bardata);
                                  
                                            var options = {

                                                pieHole: 0.4,
                                                series: [
                                                    {color: '#b3d657', visibleInLegend: false},
                                                    {color: '#c1c2c3', visibleInLegend: false}
                                                ],

                                                legend: {
                                                    position: 'bottom',
                                                    alignment: 'left'
                                                },
                                                chartArea: {
                                                    left: 16,
                                                    top: 10,
                                                    width: '95%',
                                                    height: '80%',
                                                },
                                                isStacked: true,
                                                bar: { groupWidth: '60%' },
                                                focusTarget: 'category',
                                                tooltip: {isHtml: true},

                                            };
                                            var barChart = new google.visualization.ColumnChart(document.getElementById("container-div"));
                                            barChart.draw(view, options);
                                        }
                                        function createCustomHTMLContent(accepted, pending) {

                                            return '<div class="chart-tooltip-header container">' +
                                                    + '<div class="row">'
                                                        + '<div class="col-12">'
                                                             +'Custom Title'
                                                        + '</div>'
                                                    + '</div>'
                                                    + '<div class="row">'
                                                        + '<div class="col-6">'
                                                            + 'Suggested'
                                                        + '</div>'
                                                        + '<div class="col-6 pull-right">'
                                                              +  pending
                                                        + '</div>'
                                                    + '</div>'
                                                    + '<div class="row">'
                                                        + '<div class="col-6">'
                                                            + 'Accepted'
                                                        + '</div>'
                                                        + '<div class="col-6 pull-right">'
                                                            +  accepted
                                                        + '</div>'
                                                    + '</div>'
                                                + '</div>'
                                        }
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
       <!-- The next line rotates HTML tooltips by 30 degrees clockwise. -->

    <div id="container-div" style="width: 400px; height: 400px;"></div>
   

最佳答案

以下选项导致默认和自定义工具提示混合在一起。

focusTarget: 'category'

删除上述选项将允许自定义工具提示成为唯一显示的。

但为了为两个系列显示相同的自定义工具提示,
您需要在数据表中包含两个自定义工具提示列。

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

google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawBarChart);

function drawBarChart() {
  var bardata = google.visualization.arrayToDataTable([
    ['Genre', 'Accepted', {'type': 'string', 'role': 'tooltip', 'p': {'html': true}}, 'Pending', {'type': 'string', 'role': 'tooltip', 'p': {'html': true}}],
    ['Egg Baskets', 4325, createCustomHTMLContent(234, 434), 4324, createCustomHTMLContent(234, 434)],
    ['Cheese Wedges', 43, createCustomHTMLContent(234, 434), 434, createCustomHTMLContent(234, 434)],
    ['Bannanasanan', 43, createCustomHTMLContent(234, 434), 434, createCustomHTMLContent(234, 434)]
  ]);

  var view = new google.visualization.DataView(bardata);
  var options = {
    series: [
      {color: '#b3d657', visibleInLegend: false},
      {color: '#c1c2c3', visibleInLegend: false}
    ],
    legend: {
      position: 'bottom',
      alignment: 'left'
    },
    chartArea: {
      left: 16,
      top: 10,
      width: '95%',
      height: '80%',
    },
    isStacked: true,
    bar: { groupWidth: '60%' },
    tooltip: {isHtml: true},
  };
  var barChart = new google.visualization.ColumnChart(document.getElementById("container-div"));
  barChart.draw(view, options);
}

function createCustomHTMLContent(accepted, pending) {
  return '<div class="chart-tooltip-header container">' +
          + '<div class="row">'
              + '<div class="col-12">'
                   +'Custom Title'
              + '</div>'
          + '</div>'
          + '<div class="row">'
              + '<div class="col-6">'
                  + 'Suggested'
              + '</div>'
              + '<div class="col-6 pull-right">'
                    +  pending
              + '</div>'
          + '</div>'
          + '<div class="row">'
              + '<div class="col-6">'
                  + 'Accepted'
              + '</div>'
              + '<div class="col-6 pull-right">'
                  +  accepted
              + '</div>'
          + '</div>'
      + '</div>'
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="container-div"></div>

关于javascript - Google Charts - 将默认内容与自定义 HTML 混合用于工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54312486/

相关文章:

javascript - 单击 for zom 使移动图像全屏显示

javascript - Chart.js - 同一 Canvas 上的多个圆环图

javascript - 未捕获的类型错误 : string is not a function - on google Chart

javascript - 谷歌图表错误 :Cannot read property 'length' of undefined; Debugging error in Google Charts

google-visualization - 谷歌图表 API : Always show the Data Point Values in Graph

javascript - Wordpress url 中的 & 或 & 是正确的方法

javascript - 我们可以在 MooTools/Jquery 选择器中使用 OR 运算符吗

javascript - NodeJS https 服务器使用 express 返回 ERR_SSL_PROTOCOL_ERROR

c# - 执行 ChartImg.axd 的子请求时出错。这不是重复的

javascript - amcharts 以小时和分钟为单位设置值轴网格(hh :mm), 停止它以转换为天数