웹 차트 결과 데이터를 Google 차트에 표시


11

웹 양식 결과를 Google 차트 로 표시하려고합니다 . 테마의 template.php 파일에서 theme_webform_results_analysis ()를 재정의하고 Chart 모듈을 사용하여 테마 레이어 에서이 작업을 수행하고 있습니다. Drupal 6.22, Webform 6.x-3.11.

웹 폼 분석 페이지에는 일반적으로 테이블의 데이터가 표시되므로 해당 테이블의 배열을 해킹하여 물건을 Chart API에 전달하려고합니다 .

편집 : var_dump를 사용하는 방법을 알아 내고이 질문의 첫 번째 버전에서 사용했던 $ rows 배열을 사용하는 대신 $ row_data 및 $ questions 배열을 별도로 얻는 것이 더 나은 방법이라는 것을 알았습니다. 두 배열의 매시업).

편집 # 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 시작하기 : 초보자부터 전문가까지"( link )를 읽고 나면 지금까지 보류 한 다음 다시 한 번 알려 드리겠습니다 . 온라인에서 도움을받는 데 어려움을 겪고 있었기 때문에이 까다로운 것을 시도하기 전에 기본 사항을 더 잘 처리해야한다고 생각했습니다.
Sarah German

답변:


2

웹 양식을 지원하는 또 다른 Drupal 차트 모듈이 있습니다 : http://drupal.org/project/fusioncharts

Fusionchart에는 fusioncharts_webform이라는 작은 하위 모듈이 있습니다.


답변 주셔서 감사합니다! FusionCharts를 살펴 봤지만 Flash를 사용하기 때문에 프로젝트에 적합하지 않으며 유료 버전이 필요합니다. 오픈 소스 솔루션을 고수하려고합니다. 그러나 그것은 멋지게 보입니다. 많은 사람들 에게이 문제를 해결하는 것이 좋습니다.
Sarah German

1

3 년이 지난 지금, 나는 알고 있지만, 그 이후로 조금 진화했습니다 ...

이 질문의 제목 만 고려하면 요즘 차트 모듈 을 통해이 문제를 해결할 수 있습니다 (원래 질문 은 다른 모듈 인 Chart 에서 시작되었지만 ). 그리고 이것은 Webform Chart 또는 Webform Charts 와 함께 사용됩니다 .

오늘날의 실제 요구 사항에 따라이 2 개의 Webform 관련 모듈을 사용하면 사이트 구축 활동 (아마도 Drupal 개발자 기술이 더 이상 필요하지 않음)을 통해 많은 것을 달성 할 수 있습니다. 이러한 Webform 차트 모듈에 대한 자세한 내용은 흥미로운 모듈에 대한 자세한 내용은 차트 모듈통한 차트 작성을 용이하게 하는 모듈의 글 머리표 5를 참조하십시오 .

요즘의 다른 대안에 대해서는 차트 모듈 비교를 사용하십시오 (사용 가능한 수십 가지 차트 모듈에 대해 실제로 혼란 스러울 준비가되었습니다 ...).

주의 : 저는 Chart and Charts 의 새로운 (공동) 관리자 이자 차트 모듈 비교 저자입니다 . Webform의 관리자이기도 한 차트 및 Webform ChartS ( 's')에 Quicksketch의 (놀라운) 기여를 계속하려고합니다.

추신 : 혼란스러운 * chart (s) 네임 스페이스에 대해 죄송합니다. 발명하지 않았습니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.