Exibir dados dos resultados do formulário da web em um gráfico do Google


11

Estou tentando exibir resultados de formulários da web como gráficos do Google . Estou fazendo isso na camada de tema, substituindo theme_webform_results_analysis () no arquivo template.php do meu tema e usando o módulo Gráfico . Drupal 6.22, Webform 6.x-3.11.

A página de análise do formulário da web normalmente mostra os dados em uma tabela, então estou tentando separar as matrizes para que essa tabela passe coisas para a API do gráfico .

EDIT : Eu descobri como usar var_dump e descobri que a melhor abordagem seria levantar as matrizes $ row_data e $ questions separadamente (em vez de usar a matriz $ lines que eu tinha na primeira versão desta pergunta, que era um mashup de ambas as matrizes).

Edição # 2 : Eu acho que descobri como pegar cada parte das matrizes $ questions e $ row_data originais (veja abaixo - o foreach no outro foreach). Portanto, agora eu preciso colocar essas peças em matrizes apropriadas (1 por pergunta) e encontrar uma maneira de iterar todas elas.

Aqui está o que eu tenho no template.php:

/**
 * Output the content of the Analysis page.
 * @see webform_results_analysis()
 */
function mytheme_webform_results_analysis($node, $data, $sids = array(), $analysis_component = NULL) {

  foreach ($data as $cid => $row_data) {

    if (is_array($row_data)) {

      // get the questions, put them in an array
      $questions = array();
      $questions[] = array('data' => check_plain($node->webform['components'][$cid]['name']));

      // this will print everything out in the right order - it really needs to
      // make an array for each question that looks like $test_chart below
      foreach ($questions as $question) {
        print $question['data'] . '<br />'; // questions 
        foreach ($row_data as $key => $value) {
          print $value[0] . '<br />'; // labels
          print $value[1] . '<br />'; // results 
        }
      }

      // Set up the chart
      $chart = array(
        '#chart_id' => 'webform_analysis',
        '#type' => CHART_TYPE_PIE_3D,
        '#size' => chart_size(658, 250)
      );

      // not real data here, this just shows the format I'm shooting for
      $test_chart = array(
        'option 1' => '12',
        'option 2' => '45',
        'option 3' => '122'
      ); 

      // separate the above array into labels and values, add a percentage to the label
      foreach ($test_chart as $key => $value) {
        $chart['#data'][] = $test_chart[$key];
        $chart['#labels'][] = strip_tags($key) . ' (' . round($test_chart[$key], 2) .  '%)';
      }
      // pick some colors
      $chart['#data_colors'][] = 'b0c73d';
      $chart['#data_colors'][] = '667323';
      $chart['#data_colors'][] = '221f1f';

      $output = chart_render($chart);    
    }
  }

  if (count($row_data) == 0) {
    $output = t('There are no submissions for this form.');
  }

  // return the data that goes into chart function, just for testing
  // return $chart_data; 

  // someday, this might return a set of webform charts. right now it returns the fake test chart
  // return $output;
}

1
você resolveu sua própria pergunta? Em caso afirmativo, poste sua própria resposta
iStryker

Não, eu ainda não descobri isso. Está em espera por enquanto até eu terminar de ler "Iniciando o PHP e o MySQL5: do iniciante ao profissional" ( link ), e então vou tentar outra vez. Comecei a obter ajuda on-line, então achei que só precisava entender melhor os fundamentos antes de tentar algo tão complicado.
Sarah German

Respostas:


2

Há outro módulo de gráficos do Drupal que fornece suporte para webforms: http://drupal.org/project/fusioncharts

O Fusionchart tem um pequeno submódulo chamado fusioncharts_webform


Obrigado pela sua resposta! Eu olhei para o FusionCharts, mas não é um bom ajuste para o meu projeto, pois ele usa o Flash e precisamos da versão paga - tentamos manter as soluções de código aberto. Mas parece bom, aposto que resolve esse problema para muitas pessoas.
Sarah German

1

Mais de três anos depois, eu sei, mas as coisas evoluíram um pouco desde então ...

Considerando apenas o título desta pergunta, é possível abordar isso por meio do módulo Charts atualmente (embora a pergunta original tenha começado no Chart , que é outro módulo). E isso em combinação com o Webform Chart ou o Webform Charts .

Dependendo de quais são suas necessidades atuais, parece que, com esses dois módulos relacionados ao Webform, muito pode ser alcançado através das atividades de criação de sites (provavelmente não há mais necessidade das habilidades dos desenvolvedores do Drupal). Consulte o marcador 5 em Módulos que facilitam a criação de gráficos por meio do módulo Gráficos para obter mais detalhes sobre esses módulos do (s) gráfico (s) da Web (e link para uma discussão interessante).

Use a Comparação de módulos de gráficos para outras alternativas em potencial hoje em dia (e esteja pronto para realmente ficar confuso sobre as dezenas de módulos de gráficos disponíveis ...).

Esteja ciente: Eu sou um novo (co-) mantenedor do Gráfico e gráficos , e o autor da Comparação de módulos gráficos . Estou tentando continuar as contribuições (surpreendentes) do Quicksketch para o Charts, que também é o mantenedor do Webform e do Webform ChartS (com 's').

PS: Desculpe por todos esses namespaces * gráficos confusos, eu não os inventei ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.