Ich versuche, Webform-Ergebnisse als Google Charts anzuzeigen . Ich mache dies auf der Themenebene, indem ich theme_webform_results_analysis () in der template.php-Datei meines Themas überschreibe und das Diagrammmodul verwende . Drupal 6.22, Webform 6.x-3.11.
Die Webformular-Analyseseite zeigt normalerweise die Daten in einer Tabelle an, daher versuche ich, die Arrays für diese Tabelle zu hacken, um Inhalte an die Diagramm-API zu übergeben .
BEARBEITEN : Ich habe herausgefunden, wie man var_dump verwendet, und festgestellt, dass der bessere Ansatz darin besteht, in den Arrays $ row_data und $ question separat aufzustehen (anstatt das Array $ rows zu verwenden, das ich in der ersten Version dieser Frage hatte ein Mashup beider Arrays).
EDIT # 2 : Ich glaube, ich habe herausgefunden, wie man jedes Stück der ursprünglichen $ question- und $ row_data-Arrays erfasst (siehe unten - das foreach im anderen foreach). Jetzt muss ich diese Teile in die richtigen Arrays bringen (1 pro Frage) und einen Weg finden, all diese zu durchlaufen.
Folgendes habe ich in 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;
}