แสดงข้อมูลผลลัพธ์เว็บฟอร์มใน Google Chart


11

ฉันพยายามที่จะแสดงผลเว็บฟอร์มเป็นGoogle แผนภูมิ ฉันทำเช่นนี้ในชั้นธีมโดยเอาชนะ theme_webform_results_analysis () ในไฟล์ template.php ธีมของฉันและการใช้โมดูลแผนภูมิ Drupal 6.22, Webform 6.x-3.11

หน้าการวิเคราะห์เว็บฟอร์มปกติจะแสดงข้อมูลในตารางดังนั้นฉันพยายามที่จะตัดออกจากกันอาร์เรย์สำหรับตารางที่จะผ่านสิ่งที่เข้ามาในแผนภูมิ API

แก้ไข : ฉันคิดวิธีการใช้ var_dump และพบว่าวิธีที่ดีกว่าอาจลุกขึ้นใน $ row_data และ $ questions arrays แยกต่างหาก (แทนที่จะใช้ $ array array ที่ฉันมีในรุ่นแรกของคำถามนี้ซึ่งเป็น ตอบโต้กับผู้ใช้ได้ของทั้งสองอาร์เรย์)

แก้ไข # 2 : ฉันคิดว่าฉันได้ค้นพบวิธีการคว้าแต่ละ $ $ คำถามเดิมและอาร์เรย์ $ row_data (ดูด้านล่าง - foreach ใน foreach อื่น ๆ ) ดังนั้นตอนนี้ฉันต้องเอาชิ้นส่วนเหล่านั้นออกเป็นอาร์เรย์ที่เหมาะสม (1 ต่อคำถาม) และหาวิธีที่จะทำซ้ำสิ่งเหล่านั้นทั้งหมด

นี่คือสิ่งที่ฉันมีใน 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
คุณแก้คำถามของคุณเองไหม ถ้าเช่นนั้นโพสต์คำตอบของคุณเอง
iStryker

ไม่ฉันยังไม่ได้คิดออก ถูกระงับไว้สำหรับตอนนี้จนกว่าฉันจะอ่าน "การเริ่มต้น PHP และ MySQL5: ตั้งแต่เริ่มต้นจนถึงมืออาชีพ" ( ลิงก์ ) แล้วฉันจะให้อีกนัด ฉันได้รับความช่วยเหลือทางออนไลน์ดังนั้นฉันจึงคิดว่าฉันต้องจัดการกับพื้นฐานที่ดีกว่าก่อนที่จะลองทำสิ่งที่ยุ่งยากนี้
Sarah German

คำตอบ:


2

มีอีกโมดูล Drupal charts ที่ให้การสนับสนุน webforms คือ: http://drupal.org/project/fusioncharts

Fusionchart มีโมดูลย่อยเล็กน้อยที่เรียกว่า fusioncharts_webform


ขอบคุณสำหรับคำตอบของคุณ! ฉันดู FusionCharts แต่มันไม่เหมาะสำหรับโครงการของฉันเนื่องจากใช้ Flash และเราต้องการรุ่นที่ต้องชำระ - เราพยายามติดกับโซลูชันโอเพ่นซอร์ส แต่มันก็ดูดีฉันเดิมพันที่แก้ปัญหานี้สำหรับคนจำนวนมาก
Sarah German

1

มากกว่า 3 ปีต่อมาตอนนี้ฉันรู้ แต่สิ่งต่าง ๆ มีการพัฒนาเล็กน้อยตั้งแต่นั้นมา ...

ด้วยการพิจารณาเฉพาะชื่อของคำถามนี้ใคร ๆ ก็อาจต้องการที่จะกล่าวถึงเรื่องนี้ผ่านโมดูลชาร์ตทุกวันนี้ (แม้ว่าคำถามดั้งเดิมเริ่มต้นจากแผนภูมิซึ่งเป็นอีกโมดูลหนึ่ง) และนี้ในการรวมกันกับทั้งผังเว็บฟอร์มหรือแผนภูมิเว็บฟอร์ม

ขึ้นอยู่กับความต้องการที่แท้จริงของคุณในวันนี้ปรากฏว่าด้วยโมดูลที่เกี่ยวข้องกับ Webform ทั้งสองนี้คุณสามารถทำสิ่งต่างๆได้มากมายโดยการสร้างเว็บไซต์ (อาจไม่จำเป็นต้องใช้ทักษะนักพัฒนาของ Drupal) อ้างถึง bullet 5 ในโมดูลที่อำนวยความสะดวกในการสร้างแผนภูมิผ่านโมดูล Chartsสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับโมดูล Webform Chart เหล่านี้ (และลิงก์ไปยังการสนทนาที่น่าสนใจ)

ใช้การเปรียบเทียบของโมดูลการสร้างแผนภูมิสำหรับทางเลือกอื่น ๆ ที่อาจเกิดขึ้นในวันนี้ (และพร้อมที่จะสับสนจริง ๆ เกี่ยวกับโมดูลการทำแผนภูมิที่มีอยู่หลายสิบ ... )

โปรดทราบ: ผมใหม่ดูแล (ร่วม) ของชาร์ตและชาร์ตและผู้เขียนของการเปรียบเทียบของโมดูลการสร้างแผนภูมิ ฉันพยายามดำเนินการต่อเนื่อง (น่าอัศจรรย์) ของ Quicksketch ต่อชาร์ตซึ่งเป็นผู้ดูแล Webform และ Webform ChartS (ด้วย 's')

ป.ล. : ขออภัยสำหรับเนมสเปซชาร์ตที่ทำให้เกิดความสับสน * ฉันไม่ได้ประดิษฐ์ ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.