Menampilkan data hasil formulir web di Google Chart

11

Saya mencoba menampilkan hasil webform sebagai Google Charts . Saya melakukan ini pada layer tema dengan menimpa theme_webform_results_analysis () pada file template.php tema saya dan menggunakan modul Chart . Drupal 6.22, Webform 6.x-3.11.

Halaman analisis formulir web biasanya menampilkan data dalam sebuah tabel, jadi saya mencoba meretas array untuk tabel itu untuk mengirimkan barang ke API Bagan .

EDIT : Saya menemukan cara menggunakan var_dump dan menemukan bahwa pendekatan yang lebih baik mungkin untuk bangun di $ row_data dan $ array array secara terpisah (daripada menggunakan array $ rows yang saya miliki di versi pertama dari pertanyaan ini, yang merupakan mashup dari kedua array).

EDIT # 2 : Saya pikir saya telah menemukan cara untuk mengambil setiap bagian dari $ pertanyaan asli dan $ row_data array (lihat di bawah - foreach di foreach lainnya). Jadi sekarang saya perlu memasukkan potongan-potongan ke array yang tepat (1 per pertanyaan) dan menemukan cara untuk beralih melalui semua itu.

Inilah yang saya dapatkan di 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;
}
Sarah Jerman
sumber
1
apakah Anda menyelesaikan pertanyaan Anda sendiri. Jika demikian posting jawaban Anda sendiri
iStryker
Tidak, saya belum menemukan jawabannya. Sekarang sedang menunggu sampai saya selesai membaca "Beginning PHP and MySQL5: from novice to professional" ( tautan ), dan kemudian saya akan mencoba lagi. Saya mendapatkan bantuan online, jadi saya pikir saya hanya perlu menguasai dasar-dasar sebelum mencoba sesuatu yang rumit ini.
Sarah German

Jawaban:

2

Ada modul grafik Drupal lain yang menyediakan dukungan untuk formulir web: http://drupal.org/project/fusioncharts

Fusionchart memiliki sub-modul kecil bernama fusioncharts_webform

ipwa
sumber
Terimakasih atas tanggapan Anda! Saya melihat FusionCharts, tetapi itu tidak cocok untuk proyek saya karena menggunakan Flash dan kami membutuhkan versi berbayar - kami mencoba untuk tetap berpegang pada solusi open-source. Tapi kelihatannya bagus, saya yakin itu memecahkan masalah ini untuk banyak orang.
Sarah German
1

Lebih dari 3 tahun kemudian sekarang, saya tahu, tetapi banyak hal telah berevolusi sejak itu ...

Dengan hanya mempertimbangkan judul pertanyaan ini, orang mungkin ingin mengatasi ini melalui modul Charts hari ini (meskipun pertanyaan asli dimulai dari Chart , yang merupakan modul lain). Dan ini dikombinasikan dengan Bagan Webform atau Bagan Webform .

Bergantung pada apa kebutuhan aktual Anda saat ini, tampaknya dengan 2 modul terkait Webform ini, cukup banyak yang dapat dicapai dengan kegiatan pembangunan situs (mungkin tidak perlu lagi keterampilan pengembang Drupal). Rujuk ke butir 5 dalam Modul yang memfasilitasi pembuatan bagan melalui modul Bagan untuk beberapa detail lebih lanjut tentang modul Bagan Web ini (dan tautan ke diskusi yang menarik).

Gunakan Perbandingan modul charting untuk alternatif potensial lainnya hari ini (dan bersiaplah untuk benar-benar bingung tentang lusinan modul charting yang tersedia ...).

Sadarilah: Saya adalah pengelola (dan mitra) baru dari Chart and Charts , dan penulis dari Comparison of charting modules . Saya mencoba untuk melanjutkan kontribusi Quicksketch (luar biasa) untuk Charts, yang juga merupakan pengelola Webform, dan Webform ChartS (dengan 's').

PS: Maaf untuk semua namespaces * chart membingungkan, saya tidak menemukannya ...

Pierre
sumber