Я пытаюсь отобразить результаты веб-формы в виде 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;
}
Ответы:
Существует еще один модуль диаграмм Drupal, который обеспечивает поддержку веб-форм: http://drupal.org/project/fusioncharts
Fusionchart имеет небольшой подмодуль под названием fusioncharts_webform
источник
Я знаю, что прошло более 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: Извините за все эти запутанные * диаграммы (ы) пространства имен, я не изобрел их ...
источник