ObHighchartsBundle:自定义并正确设置xAxis与DQL查询的日期时间和间隔

时间:2015-05-18 14:38:41

标签: php symfony datetime highcharts doctrine-orm

我在Symfony项目中使用marcaube / ObHighchartsBundle

在我的控制器中,我的代码包含我对highchart / graphic的查询:

$series = array(
                array(
                    'name'  => 'Conso ECS',
                    'type'  => 'spline',
                    'color' => '#003171',
                    'yAxis' => 1,
                    'data'  => $dataConsoECS, //first query from my repo
                ),
                array(
                    'name'  => 'Consommation Chaleur',
                    'type'  => 'spline',
                    'color' => '#049372',
                    'yAxis' => 1,
                    'data'  => $dataConsoChaleur, //second query from my repo
                ),
                array(
                    'name'  => 'Température extérieure',
                    'type'  => 'spline',
                    'color' => '#FAA945',
                    'data'  => $dataTemperatures, //third query from my repo
                ),
            );
            $yData = array(
                array(
                    'labels' => array(
                        'style'     => array('color' => '#FAA945'),
                    ),
                    'title' => array(
                        'text'  => 'Temperature',
                        'style' => array('color' => '#FAA945')
                    ),
                    'opposite' => true,
                ),
                array(
                    'labels' => array(
                        'style'     => array('color' => '#6C7A89')
                    ),
                    'gridLineWidth' => 0,
                    'title' => array(
                        'text'  => 'Consommation',
                        'style' => array('color' => '#6C7A89')
                    ),
                ),
            );

            $ob = new Highchart();
            $ob->chart->renderTo('newFlo'); // The #id of the div where to render the chart
            $ob->chart->type('linechart');
            $ob->title->text('Graphique à 3 échelles');
            $ob->xAxis->title(array('text'  => "Dates"));
            $ob->xAxis->categories($arrayResultHours); //my last query which return an array of datetimes 
            $ob->xAxis->type('datetime');
            $ob->yAxis($yData);
            $ob->series($series);

            return $this->render('MySpaceMyBundle:MyFolder:graphique.html.twig', array(
            'chartChoice' => $chartRender, 'chart' => $ob));
    }

这是我的结果: enter image description here

您可以看到,查询中的所有日期时间都在我的xAxis标签中,并自动设置间隔。我只需要设置自己的每小时间隔时间,并在我传递系列索引时显示我的日期时间,例如examplehere

正如你所看到的,我有很好的DQL系列。关于日期时间的las是确定conso的时间(小时)。

但实际上,我试图在我的xAxis上得到这个结果:

y|
 |
 |
 |_____________________________________________
   00h00  01h00  02h00  03h00  to ......  23h00 

我不想让我的日期时间确定出来,但是我试图在上面代表你一天的间隔时间。

因此xAxis标签必须有一个00h00到23h00之间的日间隔,但我的系列必须要从我的数据库显示我的日期时间。这是我迷路的地方,因为我需要设置一个小时到几小时的间隔,但是我的系列必须指向查询的日期时间。

我找到this,但我还没找到我的解决方案。我需要像这样参数我的xAxis吗?

$ob->xAxis->type('datetime');
$ob->xAxis->tickInterval((24 * 3600 * 1000));

有人知道如何使用ObHighchartsBundle正确设置xAxis?

1 个答案:

答案 0 :(得分:0)

从图表中删除类别:

$ob->xAxis->categories($arrayResultHours);. 

现在,设置datetime类型和tickInterval。 最后也是最重要的是点应该是x和y的数组。在这样的js中:[x, y],其中x是以毫秒为单位的时间戳,y是值(数字)。