通过选择触发 google 时间线工具提示
Trigger google timeline tooltip with selection
我需要在选择时触发时间轴图表工具提示,而不是悬停。这似乎不起作用。
如果我在图表选项中有这个,我会得到我的工具提示:
工具提示:{ isHtml: true, 触发器:'focus' }
但是如果我把它改成这样:
tooltip: { isHtml: true, trigger: 'selection' },当我点击时间线条时工具提示不显示。
时间轴图表应该可以做到这一点吗?我在文档中找不到任何说明它不受支持的内容,尽管我可能遗漏了一些内容...
唯一支持的 trigger
将在时间轴图表中打开工具提示 focus
可能的解决方法:
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({
type: 'string',
id: 'President'
});
dataTable.addColumn({
type: 'date',
id: 'Start'
});
dataTable.addColumn({
type: 'date',
id: 'End'
});
dataTable.addRows([
['Washington', new Date(1789, 3, 30), new Date(1797, 2, 4)],
['Adams', new Date(1797, 2, 4), new Date(1801, 2, 4)],
['Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4)]
]);
//select-handler
google.visualization.events.addListener(chart, 'select', function(e) {
//the built-in tooltip
var tooltip = document.querySelector('.google-visualization-tooltip:not([clone])');
//remove previous clone when there is any
if (chart.ttclone) {
chart.ttclone.parentNode.removeChild(chart.ttclone)
}
//create a clone of the built-in tooltip
chart.ttclone = tooltip.cloneNode(true);
//create a custom attribute to be able to distinguish
//built-in tooltip and clone
chart.ttclone.setAttribute('clone', true);
//inject clone into document
tooltip.parentNode.insertBefore(chart.ttclone, chart.tooltip);
});
chart.draw(dataTable, {tooltip: {isHtml: true }});
}
.google-visualization-tooltip {
opacity: 0 !important;
max-width: 200px !important;
}
.google-visualization-tooltip[clone] {
opacity: 1 !important;
}
html,
body,
timeline {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['timeline']}]}"></script>
<div id='timeline' style="height:90%"></div>
它仍然使用默认行为(焦点上的工具提示)。
但是内置的工具提示是隐藏的(通过CSS)
在 select-handler 中,它从文档中提取内置工具提示(它是隐藏的,但它仍然存在)并创建一个将被注入到文档中的克隆。
我需要在选择时触发时间轴图表工具提示,而不是悬停。这似乎不起作用。
如果我在图表选项中有这个,我会得到我的工具提示: 工具提示:{ isHtml: true, 触发器:'focus' }
但是如果我把它改成这样: tooltip: { isHtml: true, trigger: 'selection' },当我点击时间线条时工具提示不显示。
时间轴图表应该可以做到这一点吗?我在文档中找不到任何说明它不受支持的内容,尽管我可能遗漏了一些内容...
唯一支持的 trigger
将在时间轴图表中打开工具提示 focus
可能的解决方法:
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({
type: 'string',
id: 'President'
});
dataTable.addColumn({
type: 'date',
id: 'Start'
});
dataTable.addColumn({
type: 'date',
id: 'End'
});
dataTable.addRows([
['Washington', new Date(1789, 3, 30), new Date(1797, 2, 4)],
['Adams', new Date(1797, 2, 4), new Date(1801, 2, 4)],
['Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4)]
]);
//select-handler
google.visualization.events.addListener(chart, 'select', function(e) {
//the built-in tooltip
var tooltip = document.querySelector('.google-visualization-tooltip:not([clone])');
//remove previous clone when there is any
if (chart.ttclone) {
chart.ttclone.parentNode.removeChild(chart.ttclone)
}
//create a clone of the built-in tooltip
chart.ttclone = tooltip.cloneNode(true);
//create a custom attribute to be able to distinguish
//built-in tooltip and clone
chart.ttclone.setAttribute('clone', true);
//inject clone into document
tooltip.parentNode.insertBefore(chart.ttclone, chart.tooltip);
});
chart.draw(dataTable, {tooltip: {isHtml: true }});
}
.google-visualization-tooltip {
opacity: 0 !important;
max-width: 200px !important;
}
.google-visualization-tooltip[clone] {
opacity: 1 !important;
}
html,
body,
timeline {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['timeline']}]}"></script>
<div id='timeline' style="height:90%"></div>
它仍然使用默认行为(焦点上的工具提示)。 但是内置的工具提示是隐藏的(通过CSS)
在 select-handler 中,它从文档中提取内置工具提示(它是隐藏的,但它仍然存在)并创建一个将被注入到文档中的克隆。