Я хочу визуализировать Google Charts в PHP, но я не знаю , как обновлять графики каждые X секунд для представления данных реального времени, поступающих с датчика.
Я использую CMENGoogleChartsBundle , который выглядит очень практичным и простым.Увы, мои знания PHP и Symfony являются базовыми.Javascript null.
Сначала вопрос, а затем код: Есть ли какой-либо метод в CMENGoogleChartsBundle для получения обновления диаграммы после изменения данных?
Это лишенныйвниз по PHP я подошел к:
<?php
namespace App\Controller;
use CMEN\GoogleChartsBundle\GoogleCharts\Charts\GaugeChart;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class TimedGauge extends AbstractController {
public $gauge;
public function __construct() {
$this->gauge = new Gauge();
}
/**
* @Route("/paint")
*/
public function paint() {
return $this->render('generic.html.twig', ['generic_chart' => $this->gauge->chart]);
}
/**
* @Route("/update")
*/
public function update() {
$this->gauge->updateData(); // <--- to update the data
//-----------------------------------------------------------
// the ugly page refresh that I would like to remove
//-----------------------------------------------------------
return $this->paint();
}
}
class Gauge {
public $chart;
public function __construct() {
$this->chart = new GaugeChart();
$this->updateData();
}
public function updateData() {
$this->chart->getData()->setArrayToDataTable([
['Label', 'Value'],
['Temp1', rand(0, 100)],
['Temp2', rand(0, 100)],
['Temp3', rand(0, 100)],
['Temp4', rand(0, 100)]
]);
}
}
и соответствующей ветке generic.html.twig
:
{% extends "base.html.twig" %}
{% block body %}
<body>
<div id="div_chart">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
{{ gc_draw(generic_chart, 'div_chart') }}
</script>
</div>
</body>
{% endblock %}
Спасибо