Web formu sonuç verilerini bir Google Grafiğinde görüntüle


11

Web formu sonuçlarını Google Grafikler olarak göstermeye çalışıyorum . Bunu tema katmanında, temamın template.php dosyasında theme_webform_results_analysis () geçersiz kılarak ve Grafik modülünü kullanarak yapıyorum . Drupal 6.22, Webformu 6.x-3.11.

Webform analiz sayfası normalde bir tablodaki verileri gösterir, bu yüzden grafik API'sine şeyler geçirmek için o tablo için dizileri ayırmaya çalışıyorum .

DÜZENLEME : Var_dump nasıl kullanılacağını anladım ve $ row_data ve $ sorular dizileri ayrı ayrı kalkmak için daha iyi bir yaklaşım olduğunu buldum (bu sorunun ilk sürümünde vardı $ satır satır dizisi kullanmak yerine, hangi oldu her iki dizinin bir karışımı).

EDIT # 2 : Sanırım orijinal $ soru ve $ row_data dizilerinin her parçasını nasıl alacağımı keşfettim (aşağıya bakınız - diğer foreach foreach). Şimdi bu parçaları uygun dizilere (soru başına 1) sokmam ve tüm bunları yinelemenin bir yolunu bulmam gerekiyor.

Burada template.php dosyasında neler var:

/**
 * 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
kendi sorunuzu çözdünüz mü? Eğer öyleyse kendi cevabınızı
gönderin

Hayır, henüz çözemedim. Ben "PHP ve MySQL5 Başlangıç: acemi profesyonel" ( link ) okuma bitene kadar beklemede olduğunu , ve sonra ben başka bir şans vereceğim. Çevrimiçi yardım almaya başladım, bu yüzden bu zor bir şeyi denemeden önce temelleri daha iyi ele almam gerektiğini düşündüm.
Sarah German

Yanıtlar:


2

Web formları için destek sağlayan başka bir Drupal grafik modülü var: http://drupal.org/project/fusioncharts

Fusionchart'ın fusioncharts_webform adlı küçük bir alt modülü var


Yanıtınız için teşekkürler! FusionCharts'a baktım, ancak Flash kullandığından ve ücretli sürüme ihtiyacımız olduğundan projem için uygun değil - açık kaynaklı çözümlere bağlı kalmaya çalışıyoruz. Ama güzel görünüyor, eminim bu sorunu birçok insan için çözer.
Sarah German

1

3 yıl sonra, biliyorum, ama o zamandan beri işler biraz gelişti ...

Sadece bu sorunun başlığını göz önünde bulundurarak, bir ile bu değinmesi gereken Grafikler bugünlerde modülü (başlatıldı asıl soruya olsa Grafik başka modüldür). Bu da Webform Chart veya Webform Charts ile birlikte .

Bugün gerçek ihtiyaçlarınızın ne olduğuna bağlı olarak, bu 2 Webform ile ilgili modüllerle, site oluşturma faaliyetleri (muhtemelen Drupal geliştirici becerilerine daha fazla ihtiyaç duyulmuyor) ile oldukça fazla şey elde edilebilir. Bu Webform Chart (s) modülleri hakkında daha fazla ayrıntı için Charts modülü üzerinden grafikleştirmeyi kolaylaştıran Modüller'deki madde 5'e bakın (ve ilginç bir tartışmaya bağlantı verin).

Grafik modüllerinin karşılaştırılmasını bu günlerde diğer potansiyel alternatifler için kullanın (ve düzinelerce grafik modülü hakkında gerçekten kafa karıştırmaya hazır olun ...).

Unutmayın: Ben yeni bir (yardımcı) sürdürme olduğum Grafik ve Grafikler ve yazarı grafik modüllerinin Karşılaştırma . Quicksketch'in (ayrıca) Webform ve Webform ChartS'ın ('s') koruyucusu olan Charts'a (şaşırtıcı) katkılarına devam etmeye çalışıyorum.

Not: Kafa karıştırıcı * grafik ad alanları için üzgünüm, onları icat etmedim ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.