Відображення даних результатів веб-форми у діаграмі Google


11

Я намагаюся відобразити результати веб-форми як графіки Google . Я роблю це на шарі теми, переосмислюючи topic_webform_results_analysis () у файлі template.php моєї теми та використовуючи модуль Chart . Drupal 6.22, Webform 6.x-3.11.

Сторінка аналізу веб-форм зазвичай показує дані в таблиці, тому я намагаюся зламати масиви для цієї таблиці, щоб передавати речі в API Chart .

EDIT : Я зрозумів, як використовувати var_dump, і виявив, що кращим підходом може бути вставання в масиви $ row_data та $ questions окремо (замість того, щоб використовувати масив $ рядків, який у мене був у першій версії цього питання, що було розшарування обох масивів).

РЕДАКТИКА №2 : Я думаю, що я виявив, як схопити кожен фрагмент початкових $ питань та масивів $ row_data (див. Нижче - передбачення в іншому 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: від початківця до професіонала" ( посилання ), і тоді я збираюся дати ще один знімок. Я вразив, як отримати допомогу в Інтернеті, тому я зрозумів, що мені просто потрібно краще розібратися з основами, перш ніж спробувати щось таке складне.
Сара Німецька

Відповіді:


2

Існує ще один модуль Drupal-графіків, який забезпечує підтримку веб-форм: http://drupal.org/project/fusioncharts

Fusionchart має невеликий підмодуль, який називається fusioncharts_webform


Дякую за Вашу відповідь! Я подивився на FusionCharts, але це не дуже підходить для мого проекту, оскільки він використовує Flash, і нам потрібна платна версія - ми намагаємося дотримуватися рішень з відкритим кодом. Але це виглядає приємно, я думаю, що вирішує цю проблему для багатьох людей.
Сара Німецька

1

Більше, ніж 3 роки потому, я знаю, але з тих пір все розвинулося трохи ...

Розглядаючи лише заголовок цього питання, можна сьогодні вирішити це за допомогою модуля « Графіки» (хоча початкове запитання розпочалося з діаграми , яка є іншим модулем). І це в поєднанні або з діаграмою веб-форми, або з веб-формою .

Залежно від того, якими є сьогодні ваші фактичні потреби, виявляється, що за допомогою цих 2 модулів, пов’язаних із веб-формою, можна досягти дуже багато завдяки діяльності зі створення сайтів (напевно, більше не потрібно навичок розробників Drupal). Детальну інформацію про ці модулі Веб-форм (і посилання на цікаву дискусію) див. У розділі 5 в Модулях, що полегшують графік через модуль Графіки .

Використовуйте Порівняння модулів графіків для потенційних інших альтернатив сьогодні (і будьте готові по-справжньому заплутатися у десятків наявних модулів графіків ...).

Будьте в курсі: я новий (спільний) супровідник діаграм і графіків і автор порівняння модулів графіків . Я намагаюся продовжувати (дивовижні) внески Quicksketch до Charts, який також є підтримувачем Webform та Webform ChartS (з 's').

PS: Вибачте за всі ті заплутані простори імен * діаграми, я їх не вигадав ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.