2013-05-25 4 views
0

Привет, я использую плагин Google Charts для своего приложения CakePHP.CakePhp и плагин Google Charts

В моем контроллере я: Есть две функции, которые возвращают два графика.

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

ФУНКЦИЯ 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> 

, но я просто не могу видеть один график. Я тестировал (индивидуально) каждый и функционировал. Я хочу разместить несколько диаграмм на одном и том же представлении.

Возможно ли это?

thanks

+0

Какой плагин вы используете? Это он? https://github.com/segy/GoogleChart У этого нет метода createJSChart – swiecki

+0

Я использую это: https://github.com/scottharwell/cakephp-googlecharts-plugin – Jcbo

+0

в порядке, в этом случае ваш код выглядит хорошо , – swiecki

ответ

1

Что происходит с действиями вашей статистики в вашем контроллере? $this - объект.

Есть несколько шагов, необходимых для использования плагина: '

  1. Получить данные. Используйте метод поиска или другой модели для получения требуемых данных.

  2. Настройка диаграммы:

    $> тип технологии схема ("LineChart");

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

    $> столбцы технологии схема (массив ( // Каждый ключевой столбец должен соответствовать полю в вашем массиве данных «event_date» => массив ( // Сообщает график, какой тип данных это типа» '=> 'строка',
    // диаграмма метка для этой колонки
    'метка'=> 'Дата' ), 'счета'=> Array ( 'типа'=> 'число', ' label '=>' Score ' ) ));

  3. Добавьте строки в диаграмму с помощью цикла через данные, пример приведен ниже

    Еогеасп ($ модели в $ круглый) {$ схема-> addRow ($ круглый [ 'Round']); }

  4. Установите диаграмму для вашего вида - это то же имя, которое должно быть вызвано в <div id="chart_div"><?php $this->GoogleChart->createJsChart($chart);?></div> на вид.

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

Для отображения более одной диаграммы в одном окне, вам нужно не просто использовать по умолчанию chart_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> 
+0

Не работает:/ Я использовал эхо, как ваш код, и он не работал – Jcbo

+0

Я делаю все это. За исключением: '$ this-> set ('timePerSetorChart', $ timePerSetorChart);'. Я не использую 'compact'. Если я использую компакт, а затем в своей функции «статистика» я вызываю функции, которые имеют графику, дает мне «Неопределенная переменная: timePerClientChart» – Jcbo

+0

Я обновил свой ответ, чтобы узнать, как создать несколько диаграмм на одном представлении , – swiecki