Visualizza i dati dei risultati del modulo web in un grafico di Google


11

Sto cercando di visualizzare i risultati del modulo web come grafici di Google . Lo sto facendo sul livello del tema sovrascrivendo theme_webform_results_analysis () sul file template.php del mio tema e usando il modulo Chart . Drupal 6.22, Webform 6.x-3.11.

La pagina di analisi del modulo web normalmente mostra i dati in una tabella, quindi sto cercando di separare gli array per quella tabella per passare roba nell'API Chart .

EDIT : ho capito come usare var_dump e ho scoperto che l'approccio migliore potrebbe essere quello di alzare gli array $ row_data e $ domande separatamente (invece di usare l'array $ righe che avevo nella prima versione di questa domanda, che era un mashup di entrambi gli array).

EDIT # 2 : Penso di aver scoperto come afferrare ogni pezzo delle matrici $ $ e $ row_data originali (vedi sotto - la foreach nell'altra foreach). Quindi ora ho bisogno di mettere quei pezzi in array appropriati (1 per domanda) e trovare un modo per scorrere tutti quelli.

Ecco cosa ho in 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
hai risolto la tua domanda? In tal caso, pubblica la tua risposta
iStryker

No, non l'ho ancora capito. È in sospeso per ora fino a quando ho finito di leggere "Inizio di PHP e MySQL5: dal principiante al professionista" ( link ), e poi ho intenzione di fare un altro tentativo. Ho cercato aiuto online, quindi ho pensato di dover solo gestire meglio i fondamenti prima di provare qualcosa di così complicato.
Sarah German

Risposte:


2

Esiste un altro modulo grafici Drupal che fornisce supporto per i moduli web: http://drupal.org/project/fusioncharts

Fusionchart ha un piccolo sottomodulo chiamato fusioncharts_webform


Grazie per la risposta! Ho esaminato FusionCharts, ma non è adatto al mio progetto poiché utilizza Flash e avremmo bisogno della versione a pagamento: cerchiamo di attenerci alle soluzioni open source. Ma sembra carino, scommetto che risolve questo problema per molte persone.
Sarah German

1

Più di 3 anni dopo, lo so, ma le cose si sono evolute un po 'da allora ...

Considerando solo il titolo di questa domanda, si potrebbe desiderare di affrontarlo al giorno d'oggi tramite il modulo Grafici (anche se la domanda originale è iniziata da Chart , che è un altro modulo). E questo in combinazione con grafico Webform o grafici Webform .

A seconda di quali siano le tue reali esigenze, sembra che con questi 2 moduli relativi a Webform, si possano ottenere molte cose dalle attività di costruzione del sito (probabilmente non sono più necessarie le competenze degli sviluppatori di Drupal). Fare riferimento al punto 5 in Moduli che facilitano la creazione di grafici tramite il modulo Grafici per ulteriori dettagli su questi moduli di Webform Chart (e) (e il collegamento a una discussione interessante).

Usa il Confronto di moduli grafici per altre possibili alternative in questi giorni (e sii pronto a confonderti davvero sulle dozzine di moduli grafici disponibili ...).

Attenzione: sono un nuovo (co) manutentore di grafici e grafici e autore del Confronto dei moduli grafici . Sto cercando di continuare i contributi (sorprendenti) di Quicksketch ai grafici, che è anche il manutentore di Webform e Webform ChartS (con una "s").

PS: mi dispiace per tutti quei confusi * grafici (s) spazi dei nomi, non li ho inventati ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.