更改Google时间线图表工具提示的弹出位置

时间:2019-05-30 23:18:18

标签: javascript jquery css google-visualization

我可以仅使用CSS修改工具提示的位置:

.google-visualization-tooltip {  position:relative !important; top:0 !important;right:0 !important; z-index:+1;}

但是有一种技巧可以始终相对于鼠标位置显示它吗?

我尝试使用突变观察器,但似乎不适用于时间线图。

更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。更多文字。

google.charts.load('current', {
  callback: drawChart,
  packages:['timeline']
});

function drawChart() {
  var container = document.getElementById('timeline');
  var chart = new google.visualization.Timeline(container);
  var dataTable = new google.visualization.DataTable();

  dataTable.addColumn({ type: 'string', id: 'Row label' });
  dataTable.addColumn({ type: 'string', id: 'Bar Label' });
  dataTable.addColumn({ type: 'date', id: 'Start' });
  dataTable.addColumn({ type: 'date', id: 'End' });
  dataTable.addRows([
    [ 'Row 1', 'Bar 1 ', new Date(2016, 7, 1, 0, 30), new Date(2016, 7, 1, 0, 35) ],
    [ 'Row 1', 'Bar 2', new Date(2016, 7, 1, 1, 15), new Date(2016, 7, 1, 2, 45) ],
    [ 'Row 1', 'Bar 3', new Date(2016, 7, 1, 3, 50), new Date(2016, 7, 1, 4, 15) ]
  ]);

google.visualization.events.addOneTimeListener(chart, 'ready', function () {
    var container = document.querySelector('#timeline > div:last-child');
    function setPosition(e) {
      if (e && e.target) {
        var tooltip = $(e.target);
          setTimeout(function () {
            var left = parseFloat(tooltip.css('left')) - 49;
            var top = parseFloat(tooltip.css('top')) - 40;
            tooltip.css('left', left + 'px');
            tooltip.css('top', top + 'px');
            $(".google-visualization-tooltip").fadeIn(200);
          }, 1);
      }
      else {
        var tooltip = container.querySelector('.google-visualization-tooltip');
        var left = parseFloat(tooltip.style.left) - 49;
        var top = parseFloat(tooltip.style.top) - 40;
        tooltip.style.left = left + 'px';
        tooltip.style.top = top + 'px';
        $(".google-visualization-tooltip").fadeIn(200);
      }
    }
    if (typeof MutationObserver === 'function') {
      var observer = new MutationObserver(function (m) {
        if (m.length && m[0].addedNodes.length) {
          setPosition(m);
        }
      });
      observer.observe(container, {
        childList: true
      });
    }
    else if (document.addEventListener) {
      container.addEventListener('DOMNodeInserted', setPosition);
    }
    else {
      container.attachEvent('onDOMNodeInserted', setPosition);
    }
  });



  chart.draw(dataTable, {
    timeline: {
    }
  });
}
  
div.google-visualization-tooltip {
    width: auto;
    height:auto;
    background-color: #ccccff;
    color: #000000;
    text-align: center;
    vertical-align: middle;
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="timeline"></div>

0 个答案:

没有答案