Отображать данные результатов веб-формы в Google Chart

11

Я пытаюсь отобразить результаты веб-формы в виде Google Charts . Я делаю это на слое темы, переопределяя theme_webform_results_analysis () в файле template.php моей темы и используя модуль Chart . Drupal 6.22, Webform 6.x-3.11.

Страница анализа веб-формы обычно показывает данные в таблице, поэтому я пытаюсь разбить массивы для этой таблицы, чтобы передать данные в API-интерфейс Chart .

РЕДАКТИРОВАТЬ : я выяснил, как использовать var_dump и обнаружил, что лучшим подходом может быть вставать в массивы $ row_data и $ questions отдельно (вместо использования массива $ lines, который был у меня в первой версии этого вопроса, который был Mashup обоих массивов).

РЕДАКТИРОВАТЬ # 2 : я думаю, что я обнаружил, как захватить каждый кусок оригинальных массивов $ questions и $ 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: от новичка до профессионала» ( ссылка ), а затем я собираюсь дать ему еще один шанс. Я поразился получению помощи онлайн, поэтому решил, что мне просто нужно лучше разобраться с основами, прежде чем пытаться что-то такое хитрое.
Сара Герман

Ответы:

2

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

Fusionchart имеет небольшой подмодуль под названием fusioncharts_webform

ipwa
источник
Спасибо за ваш ответ! Я посмотрел на FusionCharts, но он не подходит для моего проекта, так как он использует Flash, и нам нужна платная версия - мы стараемся придерживаться решений с открытым исходным кодом. Но это выглядит хорошо, я уверен, что это решает эту проблему для многих людей.
Сара Герман
1

Я знаю, что прошло более 3 лет, но с тех пор все немного изменилось ...

Рассматривая только заголовок этого вопроса, в эти дни можно было бы решить этот вопрос с помощью модуля « Диаграммы » (хотя исходный вопрос начался с диаграммы , которая является другим модулем). И это в сочетании либо с Webform Chart, либо с Webform Charts .

В зависимости от ваших текущих потребностей, кажется, что с этими двумя модулями, связанными с Webform, можно многое сделать с помощью действий по созданию сайтов (вероятно, больше нет необходимости в навыках разработчиков Drupal). Обратитесь к пункту 5 в разделе «Модули, облегчающие построение диаграмм через модуль Charts», чтобы получить более подробную информацию об этих модулях Webform Chart (s) (и ссылку на интересное обсуждение).

Используйте Сравнение модулей построения диаграмм для возможных других альтернатив в эти дни (и будьте готовы действительно запутаться в десятках доступных модулей построения диаграмм ...).

Имейте в виду: я новый (со-) сопровождающий Chart and Charts , а также автор модуля Comparison of charting . Я пытаюсь продолжить (удивительный) вклад Quicksketch в Charts, который также поддерживает Webform и Webform ChartS (с 's').

PS: Извините за все эти запутанные * диаграммы (ы) пространства имен, я не изобрел их ...

Pierre.Vriens
источник