Как обновить данные в CMENGoogleChartsBundle / Symfony? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу визуализировать 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 %}

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...