Tôi đang cố gắng hiển thị kết quả biểu mẫu web dưới dạng Biểu đồ của Google . Tôi đang làm điều này trên lớp chủ đề bằng cách ghi đè theme_webform_results_analysis () trên tệp template.php của chủ đề của tôi và sử dụng mô-đun Biểu đồ . Drupal 6.22, Webform 6.x-3.11.
Trang phân tích biểu mẫu web thường hiển thị dữ liệu trong một bảng, vì vậy tôi đang cố gắng tách các mảng cho bảng đó để chuyển nội dung vào API Biểu đồ .
EDIT : Tôi đã tìm ra cách sử dụng var_dump và thấy rằng cách tiếp cận tốt hơn có thể là tách riêng các mảng $ row_data và $ câu hỏi (thay vì sử dụng mảng $ rows mà tôi có trong phiên bản đầu tiên của câu hỏi này, đó là một mashup của cả hai mảng).
EDIT # 2 : Tôi nghĩ rằng tôi đã khám phá ra cách lấy từng phần của các câu hỏi $ ban đầu và các mảng $ row_data (xem bên dưới - hướng dẫn trong các hướng dẫn khác). Vì vậy, bây giờ tôi cần phải đưa các phần đó vào các mảng thích hợp (1 cho mỗi câu hỏi) và tìm cách lặp lại tất cả các phần đó.
Đây là những gì tôi đã có trong 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;
}