0

您好,我在我的 CakePHP 应用程序中使用 Google Charts 插件。

在我的控制器中,我这样做:有两个函数返回两个图表。

function statistics() {
    $this->timePerClient();
 $this->timePerProjectChart();  
}

FUNCTION timePerProject

    function timePerProjectChart() {
        $totalProjeto = $this->timePerProject();
        $tempoTotalGasto = $this->tempoTotalInvestido();

        //Setup data for chart
        $timePerProjectChart = new GoogleChart();
        $timePerProjectChart->type("PieChart");
        $timePerProjectChart->options(array('title' => "Percentagem de Tempo (horas) investido por Projeto"));
        $timePerProjectChart->columns(array(
            //Each column key should correspond to a field in your data array
            'projects' => array(
                'type' => 'string',        
                'label' => 'Projeto'
            ),
            'tempoGasto' => array(
                'type' => 'time',
                'label' => '% horas'
            )
        ));
//You can also use this way to loop through data and creates data rows: 
        foreach ($totalProjeto as $row) {
            $percentagemTempoGasto = ($this->timeToHour($row[0]['tempogasto']) / $tempoTotalGasto[0][0]['tempogasto']) * 100;
            $timePerProjectChart->addRow(array('tempoGasto' => $percentagemTempoGasto, 'projects' => $row['Project']['pname']));
        }
//Set the chart for your view
        $this->set('timePerProjectChart', $timePerProjectChart);

    }

在我看来(统计数据)我这样做:

<div id="chart_div" ><?php $this->GoogleChart->createJsChart($timePerProjectChart); 
 $this->GoogleChart->createJsChart($timePerClientChart);
?></div>

但我只是看不到一个图表。我(单独)测试了每个并且正在运行。我希望将多个图表放在同一个视图上。

可能吗?

谢谢

4

1 回答 1

1

控制器中的统计操作发生了什么?$this是一个对象。

使用插件需要几个步骤:'

  1. 获取数据。使用 find 或其他模型方法来获取所需的数据。

  2. 设置图表:

    $chart->type("LineChart");

    $chart->options(array('title' => "Recent Scores"));

    $chart->columns(array( //每个列键应该对应你数据数组中的一个字段 'event_date' => array( //告诉图表这是什么类型的数据 'type' => 'string',
    / /该列的图表标签
    'label' => 'Date' ), 'score' => array( 'type' => 'number', 'label' => 'Score' ) ));

  3. 通过循环数据将行添加到图表中,下面给出了一个示例

    foreach($model as $round){ $chart->addRow($round['Round']); }

  4. 为您的视图设置图表 - 这是必须<div id="chart_div"><?php $this->GoogleChart->createJsChart($chart);?></div>在视图中调用的相同名称。

    $this->set(compact('chart'));

要在单个视图中显示多个图表,您不仅需要使用默认值chart_div作为 div 的 id。您需要设置两个不同的 div 并相应地更新对象:

<?php $timePerProjectChart->div('projectChart');?>
<?php $timePerClientChart->div('clientChart');?>


<div id="projectChart"><?php $this->GoogleChart->createJsChart($timePerProjectChart);?></div>

<div id="clientChart"><?php $this->GoogleChart->createJsChart($timePerClientChart);?></div>
于 2013-05-26T02:11:30.623 回答