J'essaie d'afficher les résultats du formulaire Web sous forme de graphiques Google . Je fais cela sur la couche de thème en remplaçant theme_webform_results_analysis () sur le fichier template.php de mon thème et en utilisant le module Chart . Drupal 6.22, Webform 6.x-3.11.
La page d'analyse du formulaire Web affiche normalement les données dans une table, donc j'essaie de pirater les tableaux pour que cette table passe des choses dans l' API Chart .
EDIT : J'ai compris comment utiliser var_dump et j'ai trouvé que la meilleure approche pourrait être de se lever séparément dans les tableaux $ row_data et $ questions (au lieu d'utiliser le tableau $ lines que j'avais dans la première version de cette question, qui était un mashup des deux tableaux).
EDIT # 2 : Je pense avoir découvert comment récupérer chaque morceau des tableaux $ questions et $ row_data originaux (voir ci-dessous - le foreach dans l'autre foreach). Alors maintenant, je dois mettre ces morceaux dans des tableaux appropriés (1 par question) et trouver un moyen de parcourir tous ces éléments.
Voici ce que j'ai dans 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;
}