Я играю с диаграммой свечей акций Anychart, которая очень хороша, чтобы обновить диаграмму, я использую функцию setInterval
, но она перерисовывает весь график, что отстой, потому что, если я увеличиваю масштаб или что-то в этом роде, он сбрасывается и, очевидно, начинается заново. Есть ли способ просто обновлять последнюю цену из базы данных каждые пару секунд без повторного построения всего графика?
Текущая функция setInterval
для загрузки диаграммы:
setInterval(function() {
$.get('chart_data.php', function(data) {
$(".main_cont").replaceWith(data);
});
}, 2000);
Моя переменная chart_data:
$chart_data .= "{'x':'".$open_time."','open': ".$open.",'high': ".$high.",'low': ".$low.",'close': ".$close."},";
chart_data.php
файл:
anychart.onDocumentReady(function() {
// create a data table
var table = anychart.data.table('x');
// add data
table.addData([<?php echo $chart_data;?>]);
// add data
//table.addData([ {'x':'08/09/2020 10:11','open': 11000,'high': 10000,'low': 8000,'close': 8500}]);
// create a stock chart
var chart = anychart.stock(true);
// create a mapping
var mapping = table.mapAs({
'date': 'date',
'open': 'open',
'high': 'high',
'low': 'low',
'close': 'close',
'fill': 'fill'
});
var plot = chart.plot(0);
// add a series using the mapping
chart.plot(0).candlestick(mapping).name();
// set container id for the chart
chart.container('container');
var series = chart.plot(0).candlestick(mapping);
chart.scroller().xAxis(false);
// initiate chart drawing
chart.draw();
});
Я хотел бы заменить функцию setInterval
чем-то, что просто заменяет последние данные о цене из базы данных, чтобы перемещать свечу вверх или вниз, если добавляется новая запись, нарисуйте новую свечу. У меня есть скрипт для обновления свечи или добавления новой свечи, я просто не могу найти способ сделать это без перерисовки всего графика.
addData()
для замены существующих данных. Если это по-прежнему вызывает полное обновление, вам придется сравнить текущие данные диаграммы с недавно полученными данными и использовать методы вставки, удаления и обновления, как описано в документах, чтобы изменить только измененные данные. Однако это все равно может привести к полному обновлению. - person kmoser   schedule 09.08.2020