Я использую dygraphs.js, чтобы показать диаграмму. Первоначально отображается только часть всех данных, а при увеличении масштаба загружаются более подробные данные.
Я делаю вызов ajax на сервер в ZoomCallback, чтобы получить подробные данные, а затем снова инициализирую объект графика и увеличиваю масштаб до dateWindow. У меня проблема с этой функцией масштабирования. Проблема в том, что масштабирование работает впервые, и отображаются подробные данные, но если я снова масштабирую масштабированные данные, minX и maxX обратного вызова масштабирования не фиксируются правильно, и, следовательно, загрузка данных с сервера не выполняется, и ничего не видно график
Вот мой код javascript
function drawChart(data, myMinX, myMaxX) {
var dateWindow = null;
var drawPoints = $('#draw-points').prop('checked');
if (myMinX != undefined || myMinX != null)
dateWindow = [myMinX, myMaxX];
$("#myMinX").val("");
$("#myMaxX").val("");
$("#isZoomed").val(false);
g = new Dygraph(document.getElementById("linechart_material"),
data,
{
showRangeSelector: false,
connectSeparatedPoints: true,
drawPoints: drawPoints,
zoomCallback: function (minX, maxX, yRanges) {
console.log("Zoomed to [", minX, ", ", maxX, "] -> Y-Range: ", yRanges[0]);
$("#isZoomed").val(true);
$("#myMinX").val(minX);
$("#myMaxX").val(maxX);
OnSubmit(null);
},
pointSize: 5,
highlightCircleSize: 10,
series: {
Original: {
drawPointCallback: pointShape,
drawHighlightPointCallback: pointShape
},
Simplified: {
drawPointCallback: pointShape,
drawHighlightPointCallback: pointShape
}
},
legend: 'always',
//colors: ["#A0354C", "#5B9833"]
colors: ["#63A0D7", "#ED7D31"],
dateWindow: dateWindow
});
var height = $('#linechart_material').height();
var width = $('#linechart_material').width();
$('#height').val(height);
$('#width').val(width);
}
function OnSubmit(evt) {
$.ajax({
type: "POST",
url: actionUrl,
contentType: false,
processData: false,
data: data,
success: function (result) {
if (result != undefined && result != '') {
session_data = result.Data;
drawChart(result.Data, minX, maxX)
}
$("#isZoomed").val(false);
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
Вот значения minX и maxX, зарегистрированные в консоли во время первого масштабирования, а затем снова масштабирования увеличенного графика соответственно
Пожалуйста, дайте мне знать, если я здесь что-то делаю не так.