Я использую flotCharts, и когда я использую две или более гистограммы, при зависании панели отображается только значение последнего графика, а остальные графики то же значение первого. Вот код:jQuery flotcharts - всплывающая подсказка показывает только значение первого графика
HTML:
<div class="flot-chart">
<div class="flot-chart-content" id="[email protected]"></div>
</div>
JavaScript:
var [email protected] = [
@foreach (var serie in Model.Series)
{
<text>
{
label: '@serie.Name',
@DisplayGraphType(serie)
data: [
@foreach (var point in serie)
{
<text>
[@point.Item1, @point.Item2],
</text>
}
]
},
</text>
}
];
var xlabels = [
@foreach (var lbl in Model.Labels)
{
<text>[@lbl.Item1, "@lbl.Item2"],</text>
}
];
function getLabel(xval) {
var lbl = xval;
xlabels.forEach(function(e){
console.log(parseInt(e[0]) == parseInt(xval));
if (parseInt(e[0]) == parseInt(xval)) {
lbl = e[1];
}
});
return lbl;
}
$(function() {
$.plot($("#[email protected]"), [email protected], {
series: {
lines: {
lineWidth: 2,
fill: @((Model.Series.Count() == 1).ToString().ToLower()),
},
bars: {
barWidth: 0.6,
align: "center"
},
points: {
fill: @((Model.Series.Count() == 1).ToString().ToLower()),
}
},
xaxis: {
ticks: xlabels,
tickDecimals: 0
},
colors: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Series.Select(o => o.Color).ToArray())),
grid: {
color: "#999999",
hoverable: true,
clickable: true,
borderWidth: 0,
},
legend: {
show: true
},
tooltip: true,
tooltipOpts: {
content: function(label, xval, yval) {
var content = getLabel(xval) + ": " + yval;
return content;
},
}
});
});
@ControlID значение является Guid, и он автоматически генерируется случайным образом, и это всегда отличается от диаграммы.
В приведенном ниже примере, когда я зависать на второй строке графика, это показывает второй бар значение другого графа (только xaxes неверно):
Ваш код js включен в число раз на странице, один раз для каждого графика? Затем вы перезаписываете «xlabels» и оставляете только значения из последнего графика. Попробуйте также использовать свой идентификатор. – Raidri
Да, я помещаю этот скрипт на каждый график, и, вероятно, вы правы, они перезаписывают значения. Где я должен положить ID? У меня есть ControlID, который идентифицирует каждый граф. –
Измените имя на 'xlabels_ @ ControlID', как вы это делаете для' series_ @ ControlID'. Вам также нужно будет изменить функцию 'getLabel()'. – Raidri