CakePhp和Google Charts插件

时间:2013-05-25 23:14:49

标签: cakephp charts

您好我正在使用Google Charts Plugin到我的CakePHP应用程序。

在我的控制器中我做: 有两个函数可以返回两个图形。

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>

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

有可能吗?

感谢

1 个答案:

答案 0 :(得分:1)

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

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

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

  2. 设置图表:

    $ chart-&GT;类型( “应用于LineChart”);

    $ chart-&gt; options(array('title'=&gt;“Recent Scores”));

    $ chart-&GT;柱(阵列( //每个列键应对应于数据数组中的字段 'event_date'=&gt;阵列( //告诉图表这是什么类型的数据 'type'=&gt; '字符串',
    //此列的图表标签
    'label'=&gt; '日期' ) '得分'=&gt;阵列( 'type'=&gt; '数', 'label'=&gt; '得分了' ) ));

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

    foreach($ model as $ round){ $ chart-&GT; addRow($轮[ '回合']); }

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

    $这 - &gt;设置(紧凑( '图表'));

  5. 要在单个视图中显示多个图表,您不需要使用默认的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>