Я пытаюсь создать генеалогическую временную шкалу с помощью jquery.flot.Я хочу отобразить правильную метку, когда наведу точку, т.е. когда я наведу точку брака на человека, появится надпись «брак - дата брака».Но, видимо, я не могу создать массив меток, так как это возможно сделать для данных.
Немного кода:
<div id="placeholder" style="width:800px;height:300px"></div>
<script language="javascript" type="text/javascript">
$(function () {
var data = [
{
label: [["Birth Pierre MARTIN (1756)"], ["Marriage Pierre MARTIN (1781)"], ["Death Pierre MARTIN (1812)"]],
data: [[1756, 20.0], [1781, 20.0], [1812, 20.0]]
},
{
label: [["Birth Marie DUPONT (1761)"], ["Marriage Marie DUPONT (1781)"], ["Death Marie DUPONT (1833)"]],
data: [[1761, 19.0], [1781, 19.0], [1833, 19.0]]
},
{
label: [["Birth Charles MARTIN (1782)"], ["Marriage Charles MARTIN (1810)"], ["Death Charles MARTIN (1855)"]],
data: [[1782, 18.0], [1810, 18.0], [1855, 18.0]]
},
{
label: [["Birth Catherine MARTIN (1790)"], ["Marriage Catherine MARTIN (1810)"], ["Death Catherine MARTIN (1868)"]],
data: [[1790, 17.0], [1810, 17.0], [1868, 17.0]]
},
{
label: [["Birth Louis MARTIN (1813)"], ["Death Louis MARTIN (1876)"]],
data: [[1813, 16.0], [1876, 16.0]]
}
];
var options = {
series: {
lines: { show: true, lineWidth: 5},
points: { show: true, radius: 4 }
},
legend: { show: false },
xaxis: { min:1745, max:1885, tickDecimals: 0, ticks: [[1750, "1750"], [1760, "1760"], [1770, "1770"], [1780, "1780"], [1790, "1790"], [1800, "1800"], [1810, "1810"], [1820, "1820"], [1830, "1830"], [1840, "1840"], [1850, "1850"], [1860, "1860"], [1870, "1870"], [1880, "1880"]] },
yaxis: { show: true, color:null, min:14, max:22, ticks: [[20, "<strong>Pierre MARTIN</strong> (1756-1812)"], [19, "<strong>Marie DUPONT</strong> (1761-1833)"], [18, "<strong>Charles MARTIN</strong> (1782-1855)"], [17, "<strong>Catherine MARTIN</strong> (1790-1868)"], [16, "<strong>Louis MARTIN</strong> (1813-1876)"]] },
selection: { mode: "x" },
grid: { borderWidth: 2, clickable: true, hoverable: true, autoHighlight: true
}};
var placeholder = $("#placeholder");
placeholder.bind("plotselected", function (event, ranges) {
$("#selection").text(ranges.xaxis.from.toFixed(1) + " to " + ranges.xaxis.to.toFixed(1));
var zoom = $("#zoom").attr("checked");
if (zoom)
plot = $.plot(placeholder, data,
$.extend(true, {}, options, {
xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }
}));
});
placeholder.bind("plotunselected", function (event) {
$("#selection").text("");
});
var plot = $.plot(placeholder, data, options);
$("#clearSelection").click(function () {
plot.clearSelection();
});
function showTooltip(x, y, contents) {
$('' + contents + '').css( {
position: 'absolute',
display: 'none',
top: y + 5,
left: x + 5,
border: '1px solid #fdd',
padding: '2px',
'background-color': '#eef',
opacity: 0.80
}).appendTo("body").fadeIn(20);
}
var previousPoint = null;
$("#placeholder").bind("plothover", function (event, pos, item) {
$("#x").text(pos.x.toFixed(2));
$("#y").text(pos.y.toFixed(2));
if (item) {
if (previousPoint != item.datapoint) {
previousPoint = item.datapoint;
$("#tooltip").remove();
var x = item.datapoint[0].toFixed(2),
y = item.datapoint[1].toFixed(2);
showTooltip(item.pageX, item.pageY,
item.series.label);
}
}
else {
$("#tooltip").remove();
previousPoint = null;
}
});
});
</script>
Когда я наводю указатель мыши наточка брака на графике вместо отображения:
" Брак Пьера МАРТИНА (1781) ",
Я получаю весь массив:
" Рождение Пьера МАРТИНА (1756) Брак Пьера МАРТИНА (1781) Смерть Пьера МАРТИНА (1812)".
Вы можете увидеть мой пример здесь, чтобы быть более объяснительным (вы можете взять код):
демо моего графика времени
Можно ли использовать одну метку для каждой точки на графике?